PDA

View Full Version : Rotating form is lagging by using glEnable()



Saladir
01-25-2013, 10:12 AM
Hey guys,

topic descripes my problem.

i tried to build a simple Quads and Triangles House in OpenGL.
This wasn't the problem. The problem is the color.
i want to give every wall another color. but when it's rotating(x) a dominating color from the other walls is printing through my nearest wall.
i tried to solve this problem with glEnable( GL_DEPTH_TEST );
IT WORKS! but not like intended. the graphic is blinking(dont know how to write it in english).
i placed it already in every function(what includes gl stuff)
i asked a friend and he said that it have to be in my opengl_reset_scene

gl_reset_scene():


void OpenGL_Init::gl_reset_scene(){
if( iWidht == 0.0f ){
iWidht = 1.0f;
}
if( iHeight == 0.0f){
iHeight = 1.0f;
}

glViewport( 0 , 0, this->iWidht, this->iHeight );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective(45.0f, this->iWidht/this->iHeight, 0.0f, 100.0f);
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
glEnable( GL_DEPTH_TEST );

}
main.cpp


int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmd){


OpenGL_Init start;


start.screen_setup(hInstance, iCmd, 800, 460 );
start.opengl_setup( );
start.gl_reset_scene();
start.gl_draw_scene();

while ( true ){
if( start.key_pressed( )){
break;
}

else{

if(!start.gl_draw_scene()){
MessageBox( NULL,"draw scene error","Error", MB_OK|MB_ICONERROR);
break;
}
else{
SwapBuffers( start.get_hDC());
}
}
}

return 0;

}

i use opengl 2.1

tonyo_au
01-26-2013, 10:24 PM
Are you trapping you erasebackgound command from windows and discarding it. Windows may be erasing you window's background causing a flicker.

V-man
01-28-2013, 05:31 AM
Your problem is this

gluPerspective(45.0f, this->iWidht/this->iHeight, 0.0f, 100.0f);

http://www.opengl.org/wiki/Common_Mistakes#Bad_znear_value