2016-08-09 9 views
0

QtとOpenGLとGLEWを使用してクワッドのテクスチャをマッピングし、レンダリングしています。私は各フレームのテクスチャを変更し、ウィンドウを連続的に更新したいと思います。どのように私はそれを継続的に更新することができますか?Openglウィンドウを継続的に更新する

コメントに記載されているように、タイマーを追加し、それをスロットに信号を送る機能に接続することによって問題は解決されます。

+0

「ウィンドウを継続的に更新する」とはどういう意味ですか? – Shumush

+0

テクスチャをロードして表示してから、2番目のテクスチャをロードして表示するなどします。マウスが動くたびにウィンドウを更新するようになりました。私もqtとOpenGLを使用しています。 – user3178756

+0

次に、イベントを待っている場合、またはイベントをポーリングする場合は、メインループを見てください。私はqtがデフォルトでイベントを待つので、あなたのループをブロックすると思います。確信はないけど。 – Shumush

答えて

1

qtを使用してウィンドウを作成し、マウスが動いているようなイベントを管理している場合、ウィンドウを再描画する前にイベントが発生するまでアプリケーションが待機することがあります。私はQTimerオブジェクトを使用し、そのタイムアウト信号を更新機能に接続できると思います。

waitEvent()機能を持つイベントを処理する場合は、ノンブロッキングバージョンで変更してください。

+0

'frameSwapped'の信号が良いかもしれません。 – Inline

+0

'frameSwapped'は' QQuickWindow'からのシグナルだけですが、彼がそれを使用しているかどうかはわかりません。 – Shumush

+0

私はQGLWidgetを使用しています。paintGLの最後に更新を加えるだけで、レンダリングが強制的に継続されますが、それは良い解決策ですか? – user3178756

2

バッファを交換する場合は、プラットフォームごとのスワップ関数(wglSwapBuffers、glXSwapBuffersなど)を呼び出し、vsyncが無効になっていることを確認する必要があります。ウィンドウのサイズを変更させることを意味するのであれば、それは開いている特定の質問ではなく、それはウィンドウシステムにも当てはまります。

関連する問題