Sign in to follow this  
dannydy

Please help

Recommended Posts

I have done a simple chess board,my problem waa when i debug,it displayed on window,but when i maximun the windows the square all gone leaving the red color background only. #include<windows.h> #include<gl/gl.h> #include<gl/glu.h> #include<gl/glut.h> #include<math.h> //called to draw a scene void DisplayScene(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glBegin(GL_QUADS); glColor3f(0.0f,0.0f,1.0f); // Draw A Quad glVertex3f(-80.0f, 80.0f, 0.0f); // Top Left glVertex3f( 80.0f, 80.0f, 0.0f); // Top Right glVertex3f( 80.0f,-80.0f, 0.0f); // Bottom Right glVertex3f(-80.0f,-80.0f, 0.0f); // Bottom Left static GLfloat xF=-60.0; static GLfloat yS=-40.0; static GLfloat xF1=-40.0; static GLfloat yS1=-60.0; static GLfloat a=80.0f; static GLfloat b=80.0f; static GLfloat c=60.0f; static GLfloat d=60.0f; static GLfloat xFF=-80.0; static GLfloat ySS=-60.0; static GLfloat xF2=-60.0; static GLfloat yS2=-80.0; static GLfloat a1=60.0f; static GLfloat b1=60.0f; static GLfloat c1=40.0f; static GLfloat d1=40.0f; for(int i=0;i<8;i++) { if(i%2==0) { for(int j=0;j<4;j++) { glColor3f(1.0f,1.0f,0.0f); glVertex3f(xF, a, 0.0f); glVertex3f(yS, b, 0.0f); glVertex3f(xF1,c, 0.0f); glVertex3f(yS1,d, 0.0f); xF+=40.0f; yS+=40.0f; xF1+=40.0f; yS1+=40.0f; } xF=-60.0f; yS=-40.0f; xF1=-40.0f; yS1=-60.0f; a-=40.0f; b-=40.0f; c-=40.0f; d-=40.0f; } else { for(int j=0;j<4;j++) { glColor3f(1.0f,1.0f,0.0f); glVertex3f(xFF, a1, 0.0f); glVertex3f(ySS, b1, 0.0f); glVertex3f(xF2,c1, 0.0f); glVertex3f(yS2,d1, 0.0f); xFF+=40.0f; ySS+=40.0f; xF2+=40.0f; yS2+=40.0f; } xFF=-80.0f; ySS=-60.0f; xF2=-60.0f; yS2=-80.0f; a1-=40.0f; b1-=40.0f; c1-=40.0f; d1-=40.0f; } } glEnd(); glutSwapBuffers(); glLoadIdentity(); } //this Function does any neede initialization on the rendering context void MyInit() { //black background glClearColor(1.0f,0.0f,0.0f,1.0f); //set drawing color to green glColor3f(0.0f,0.0f,0.0f); } void ChangeSize(int w, int h) { GLfloat nRange=100.0f; //prevent a divide by zero if(h==0) h=1; //set viewport to window dimensions glViewport(0,0,w,h); //reset projection matrix stack glMatrixMode(GL_PROJECTION); glLoadIdentity(); //establish clipping volume(left,right,bottom,top,near,far) if(w<=h) glOrtho(-nRange,nRange, -nRange*w/h,nRange*h/w,-nRange,nRange); else glOrtho(-nRange*w/h,nRange*w/h, -nRange,nRange,-nRange,nRange); //reset model view matrix stack glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } int main(int argc, char* argv[]) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutCreateWindow("PONT EXMAPLE"); glutReshapeFunc(ChangeSize); glutDisplayFunc(DisplayScene); MyInit(); glutMainLoop(); return 0; }

Share this post


Link to post
Share on other sites
I think you don't understand how word "static" works in c++

You declare variables like this, but you're changing them while drawing your checkboard.


static GLfloat xF=-60.0;
static GLfloat yS=-40.0;
static GLfloat xF1=-40.0;
static GLfloat yS1=-60.0;
static GLfloat a=80.0f;
static GLfloat b=80.0f;
static GLfloat c=60.0f;
static GLfloat d=60.0f;

static GLfloat xFF=-80.0;
static GLfloat ySS=-60.0;
static GLfloat xF2=-60.0;
static GLfloat yS2=-80.0;
static GLfloat a1=60.0f;
static GLfloat b1=60.0f;
static GLfloat c1=40.0f;
static GLfloat d1=40.0f;



When the DisplayScene() is executed again, values of those variables have been changed from the previous frame

Change to this and everything will be ok


GLfloat xF=-60.0;
GLfloat yS=-40.0;
GLfloat xF1=-40.0;
GLfloat yS1=-60.0;
GLfloat a=80.0f;
GLfloat b=80.0f;
GLfloat c=60.0f;
GLfloat d=60.0f;

GLfloat xFF=-80.0;
GLfloat ySS=-60.0;
GLfloat xF2=-60.0;
GLfloat yS2=-80.0;
GLfloat a1=60.0f;
GLfloat b1=60.0f;
GLfloat c1=40.0f;
GLfloat d1=40.0f;



Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this