PDA

View Full Version : drawing resizing issue(vc++ with opengl)



opengl_newbie
05-29-2006, 10:34 AM
Please, what's wrong with my code which draws a 2D chessboard ,but the chessboard disappers when resizing the window and never shows up again?! :confused:


#include<GL/glut.h>

GLint row = 8;

void chessBoard()
{
glClear(GL_COLOR_BUFFER_BIT);
glPointSize(50);
glLoadIdentity();
glBegin(GL_POINTS);
glVertex2i(100,50);
glEnd();
GLint y = 380;
while(row>0)
{
GLint x = 100;
if(row%2==0)
{
for(int i=0;i<8;i++)
{
if(i%2!=0)
glColor3d(0.6,0.6,0.6);
else
glColor3d(0.2,0.2,0.2);
glRecti(x,480-y,x+50,480-(y+50));
x+=50;
}
}
else
{
for(int i=0;i<8;i++)
{
if(i%2!=0)
glColor3d(0.2,0.2,0.2);
else
glColor3d(0.6,0.6,0.6);
glRecti(x,480-y,x+50,480-(y+50));
x+=50;
}
}
y-=50;
row--;
}
glFlush();
}

void myReshape (int w, int h)
{
glViewport(0,0,w,h);
glClearColor(0.0,0.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,w,0.0,h);
glMatrixMode(GL_MODELVIEW);
}

void main(int argc, char** argv)
{
glutInit(&amp;argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(640,480);
glutInitWindowPosition(0,0);
glutCreateWindow("HwOne, Ex2!");
glutReshapeFunc(myReshape);
glutDisplayFunc(chessBoard);
glutMainLoop();
}

songho
05-29-2006, 01:48 PM
opengl_newbie,
There is no error in your reshape callback function, but you have a logic error in chessBoard(), precisely, at "row > 0".

You have to reset it to the default value, right before the while-loop.
==song==

opengl_newbie
05-29-2006, 02:52 PM
songho,
Thank you very much, that helps a lot.