我正在使用 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;
}
// ----------
问题是 display() 或 reshape() 都没有被调用过。当窗口调整大小时,它的左上部分保持白色,其余部分变为黑色。
取消注释 glutIdleFunc() 行会导致现在调用显示函数,并且调整窗口大小使其全黑。但是,仍然没有调用 reshape()。
我盯着 freeglut 源代码看,看不出问题出在哪里。不幸的是,我对调试 freeglut 的 Windows API 知之甚少。
任何想法为什么回调不起作用?