0

誰かがどのように機能するか説明できますかglutMainLoop?そして2番目の質問、なぜ最初に原因のglClearColor(0.0f, 0.0f, 1.0f, 1.0f);後に定義され、 次に定義するのかglutDisplayFunc(RenderScene);glClear(GL_COLOR_BUFFER_BIT);glClearColor(0.0f, 0.0f, 1.0f, 1.0f);

int main(int argc, char* argv[])
    {
        glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
        glutInitWindowSize(800, 00);
        glutInitWindowPosition(300,50);
    glutCreateWindow("GLRect");
    glutDisplayFunc(RenderScene);
        glutReshapeFunc(ChangeSize);
    glClearColor(0.0f, 0.0f, 1.0f, 1.0f);  <--
    glutMainLoop();

        return 0;
    }

void RenderScene(void)
    {
    // Clear the window with current clearing color
    glClear(GL_COLOR_BUFFER_BIT);

    // Set current drawing color to red
    //         R     G     B
    glColor3f(1.0f, 0.0f, 1.0f);

    // Draw a filled rectangle with current color
    glRectf(0.0f, 0.0f, 50.0f, -50.0f);

    // Flush drawing commands
    glFlush();
    }
4

2 に答える 2

1

glutMainLoop()プラットフォーム固有のイベントループを実行し、glut*Func()必要に応じて登録済みのコールバックを呼び出すだけです。

RenderScene()を呼び出すまで、GLUTによって呼び出されることはありませんglutMainLoop()。したがって、実際glClearColor()には、ではなく最初に呼び出されglClear()ます。

于 2010-05-24T18:26:40.760 に答える
0
glutDisplayFunc(RenderScene);

これはコールバック関数を設定するだけで、への呼び出しでメインのアプリループに入るまで実際には呼び出されませんglutMainLoop。だからglClearColor前に来るglClear

于 2010-05-25T15:37:15.073 に答える