1

アニメーションを表示できるように、数マイクロ秒の遅延を入れたいだけです。遅延機能が動作していません。私は fltk を使用しているので、何でも役に立ちます。

for(i = 0; i < 1; i = i + 0.1)
{ 
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f );
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glLoadIdentity();
    glTranslatef(i,i,1);
    glRotatef(spin, 0, 0, 1);
    delay(1000);
    glScalef(i,i,i);
    glutWireCube(1);        
}
4

1 に答える 1

4

OpenGL ではそのようにアニメーションを再生しません (技術的には、ループの最後に SwapBuffers を配置することもできますが、それは良い考えではありません)。

あなたがすべきことは、呼び出されたときに再描画を発行するアイドルハンドラーを実装することです。描画関数では、表示関数の呼び出し間の時間を調整して、その量だけアニメーションを進める必要があります。

スリープなどを追加するループを決して (!)実行しないでください。このようなコードは外部イベントに応答しません。最新の OS は、そのように動作するプログラムを応答しない/ハングしたと見なし、プログラムを強制終了できるメッセージ ボックスをユーザーに表示します。これはあなたが望むものではありません。

于 2013-04-06T00:34:37.857 に答える