PDA

View Full Version : Odd behavior when resizing windows



jpummill
02-20-2002, 05:09 PM
Hi all,

I have added the following to the draw function of the basic_template:

//--------------------------------------

glTranslatef(-1.5f,0.0f,-6.0f); // Move Left 1.5 Units And Into The Screen 6.0
glBegin(GL_TRIANGLES); // Drawing Using Triangles
glVertex3f( 0.0f, 1.0f, 0.0f); // Top
glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left
glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right
glEnd(); // Finished Drawing The Triangle
glTranslatef(3.0f,0.0f,0.0f); // Move Right 3 Units
glBegin(GL_QUADS); // Draw A Quad
glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left
glVertex3f( 1.0f, 1.0f, 0.0f); // Top Right
glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right
glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left
glEnd();

//-------------------------------------------
Some may notice, that this is directly from NEHE's lesson02 http://www.opengl.org/discussion_boards/ubb/smile.gif


The odd behavior that I am seeing is that when I resize the window, the objects appear to stretch for some number of pixels, then they snap back to their original size, only to start stretching again as I continue to enlarge the window.

In GLUT, the objects would grow consistantly in the X and Y plane.

I bet this is some difference that I am not seeing between the perspective, and viewpoint options between the GLUT and CPW programs but that code appears to be the same.

Any ideas?

Thanks,
John

jmathies
02-20-2002, 08:22 PM
I tested this using the template. On resizing I believe I notices the problem you had. In the set3DMatrix function there is a call to gluPerspective:

gluPerspective( 60, windowInfo.width / windowInfo.height, 1, 100 );

Unfortunately width and height are integers. When I changed the line to:

gluPerspective( 60, (float)windowInfo.width / (float)windowInfo.height, 1, 100 );

The problem went away. I'll update this in the samples and template. Lemmie know if this fixes your problem..

Regards,
Jim

jpummill
02-21-2002, 11:29 AM
Thats it!!!

Thanks Jim. I added a printf to the set3DMatrix so that I could see what was happening. Now I think I understand. It was a rounding issue.

By the way, this also fixed another odd problem that I forgot to mention. Without the (float) typecast, if the window was higher than it was wide, the objects would just vanish. Again due to rounding.

Thanks a lot for the help,
jpummill