C 为什么显示函数要调用两次?
在下面的OpenGL代码中,用于初始化和主函数,为什么显示函数会被调用两次?除了C 为什么显示函数要调用两次?,c,opengl,graphics,C,Opengl,Graphics,在下面的OpenGL代码中,用于初始化和主函数,为什么显示函数会被调用两次?除了glutDisplayFunc(display),我看不到将执行的调用 每当GLUT决定让应用程序(即您)重画窗口内容时,就会调用您的display()回调 可能在窗口打开时发生了一些事件,导致需要确保重新绘制窗口 你不应该“关心”;只要确保在display()函数中重新绘制内容,不管调用多少次。如果我在display中计算某个值,该怎么办?它将被计算两次,然后可能产生错误的结果。@MohitJain您不应该在dis
glutDisplayFunc(display)
,我看不到将执行的调用
每当GLUT决定让应用程序(即您)重画窗口内容时,就会调用您的display()
回调
可能在窗口打开时发生了一些事件,导致需要确保重新绘制窗口
你不应该“关心”;只要确保在
display()
函数中重新绘制内容,不管调用多少次。如果我在display中计算某个值,该怎么办?它将被计算两次,然后可能产生错误的结果。@MohitJain您不应该在display()
中计算任何内容。期望在随机时间调用此函数。不要依赖于只有在某些情况下才调用它。
void init(void)
{
glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Set background color to black and opaque
glClearDepth(1.0f); // Set background depth to farthest
glEnable(GL_DEPTH_TEST); // Enable depth testing for z-culling
glEnable(GL_POINT_SMOOTH);
glDepthFunc(GL_LEQUAL); // Set the type of depth-test
glShadeModel(GL_SMOOTH); // Enable smooth shading
gluLookAt(0.0, 0.0, -5.0, /* eye is at (0,0,5) */
0.0, 0.0, 0.0, /* center is at (0,0,0) */
0.0, 1.0, 0.0); /* up is in positive Y direction */
glOrtho(-5,5,-5,5,12,15);
//glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Nice perspective corrections
}
int
main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutCreateWindow("red 3D lighted cube");
glutInitWindowSize(1280,800 ); // Set the window's initial width & height
//glutInitWindowPosition(50, 50); // Position the window's initial top-left corner
//glutReshapeWindow(800,800);
init();
compute();
glutDisplayFunc(display);
glutMainLoop();
return 0; /* ANSI C requires main to return int. */
}