我正在使用Visual Studio Express 2010,其中链接了freeglut_static.lib(在Properties> Linker> Input> Additional Dependencies,版本2.8.0中)并定义了FREEGLUT_STATIC。代码构建和编译,虽然我必须调整一堆属性以使其链接。我正在运行Window-7 64位,虽然代码被编译为32位可执行文件。
代码是
// -----------------------------------
static void reshape(int w, int h) {
// free old buffers; allocate new ones; update global state
// etc...
;
}
static void display() { glutSwapBuffers(); }
int main(int argc; char **argv)
{
glutInitWindowSize(500, 500);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
glutInit(argc, argv);
glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS);
glutDisplayFunc(display);
glutReshapeFunc(reshape);
// glutIdleFunc(display);
glutCreateWindow("Hmm");
glutMainLoop();
// free resources
return 0;
}
// ----------
问题是show()或reshape()都没有被调用过。调整窗口大小时,窗口左上角保持白色,其余部分变黑。
取消注释glutIdleFunc()行会导致立即调用显示函数,并且调整窗口大小会使其全部变黑。但是,仍然没有调用reshape()。
我盯着freeglut源代码,无法看到问题所在。不幸的是,我不太了解调试freeglut的Windows API。
为什么回调不起作用的任何想法?
答案 0 :(得分:3)
glutDisplayFunc
设置当前窗口的功能。您必须在glutCreateWindow
之前致电glutDisplayFunc
。