カスタム イメージ表示コントロールを作成した C# .NET アプリケーションがあります。各画像表示は独自の表示コンテキストを表し、glDrawPixels を使用して画像を描画します (はい、テクスチャを使用する方が良いことはわかっています。将来的にはそうする予定ですが、このアプリは既に開発が進んでおり、時間が限られています)。
現在、両方の画像を同時にパンしようとしています。つまり、1 つの画像が 10 ピクセル下に移動すると、2 番目の画像は 10 ピクセル下に移動します。そのようです:
imageOne.YPan -= 10;
imageTwo.YPan -= 10;
imageOne.Invalidate(); //This forces a redraw.
imageTwo.Invalidate(); //This forces a redraw.
さて、ここに私が抱えている問題があります。画像表示の 1 つだけが再描画されています。2 つの Invalidate 呼び出しの間に一時停止を置き、一時停止期間を少なくとも 110 ミリ秒にすると、両方が再描画されますが、同時には再描画されません。そのため、2 番目の画像が常に最初の画像に追いつこうとしているように見えます。さらに、110 ミリ秒の一時停止により、モーションが大幅に遅くなります。
各画像の更新と無効化を独自のスレッドに配置しようとしましたが、これは役に立ちませんでした。
描画の開始時に適切なコンテキストを現在の状態にし、最後に swapbuffers() を呼び出しています。draw関数の最後にglFinishを追加してみましたが変わりませんでした。
問題はグラフィックカードではないでしょうか?openGL 1.4 しかない統合 GPU の使用に行き詰まっています。
うまくいけば、私の問題に対する答えが見つかるのに十分な詳細を提供できました。