Windows 7 从未调用重塑回调的原因可能是什么?

Windows 7 从未调用重塑回调的原因可能是什么?,windows-7,glut,freeglut,Windows 7,Glut,Freeglut,我使用的是Visual Studio Express 2010,其中链接了freelut_static.lib(在属性>链接器>输入>附加依赖项,版本2.8.0中)并定义了freelut_static。代码构建和编译,尽管我必须调整一系列属性以使其链接。我运行的是64位Window-7,尽管代码是作为32位可执行文件编译的 代码是 // ----------------------------------- static void reshape(int w, int h) { //

我使用的是Visual Studio Express 2010,其中链接了freelut_static.lib(在属性>链接器>输入>附加依赖项,版本2.8.0中)并定义了freelut_static。代码构建和编译,尽管我必须调整一系列属性以使其链接。我运行的是64位Window-7,尽管代码是作为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()还是reforme()都不会被调用。调整窗口大小时,窗口左上部分保持白色,其余部分变为黑色

取消注释glutIdleFunc()行会导致现在调用display函数,调整窗口大小会使其全部变黑。但是,仍然没有调用重塑()

我一直盯着freeglut源代码看,看不出问题出在哪里。不幸的是,我对windows API了解不够,无法调试freeglut


知道回调为什么不起作用吗?

glutDisplayFunc
为当前窗口设置函数。在设置当前窗口的函数之前,必须调用
glutCreateWindow
。您必须在
glutDisplayFunc
之前调用
glutCreateWindow

谢谢,这解决了问题!(每次我开始用一个新的API编码时,我总是有一个这样的bug开始…)嗯,为什么回调对glutIdleFunc()有效?这无疑使我更难看到问题所在,因为空闲函数是全局函数。看,谢谢,这解决了问题!(每次我开始用一个新的API编码时,我总是有一个这样的bug开始…)嗯,为什么回调对glutIdleFunc()有效?这无疑使我更难看到问题所在,因为空闲函数是全局函数。看见