0

私はVisual Studio Express 2010を使用しており、freeglut_static.libがリンクされており([プロパティ]> [リンカー]> [入力]> [追加の依存関係、バージョン2.8.0])、FREEGLUT_STATICが定義されています。コードはビルドおよびコンパイルされますが、リンクするために多数のプロパティを微調整する必要がありました。コードは 32 ビット実行可能ファイルとしてコンパイルされていますが、Window-7 64 ビットを実行しています。

コードは

// -----------------------------------
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 のソース コードをじっと見ましたが、何が問題なのかわかりません。残念ながら、Windows API について freeglut をデバッグするのに十分な知識がありません。

コールバックが機能しない理由はありますか?

4

1 に答える 1

3

glutDisplayFunc現在のウィンドウの関数を設定します。glutCreateWindowの前に電話する必要がありますglutDisplayFunc

于 2012-05-11T07:40:45.200 に答える