1

firebreath opengl Firebreath Openglチュートリアルに従いましたが、機能しますが、ページのサイズ変更またはスクロール時にちらつきが発生するため、Webで解決策を検索しましたが、小さなヒント以外は何も見つかりませんでした

FireBreath のヒント: Windows での描画

それは言います:

RefreshEvent を受け取るたびに、再描画する必要があります。セカンダリ スレッドを使用して描画している場合は、そのスレッドにメッセージを渡す何らかの方法があることを確認してください。そうしないと、ちらつきが発生します。

私がやろうとしたことは、再描画メッセージを描画スレッドに渡す方法を見つけることで、ManualResetEvent に相当する Boostを使用してメインスレッドを強制的に再描画させましたが、何も起こりませんでした。

私が使用したコード:

bool threadedOpenGLTestPlugin::draw( FB::RefreshEvent *evt, FB::PluginWindow* win )
{
   Event.Set(); // Event is Boost equivalent of ManualResetEvent
   //Refresh Events... nothing todo since the opengl is running in it's own thread
   return true;
}
void threadedOpenGLTestPlugin::drawThreaded()
{
   while(true)
   {
      Event.Wait(30);// the event waits for 30 milisec or for event fired by the threadedOpenGLTestPlugin::draw function
      Event.Reset();
      //.......... drawing loop 
   }
}
4

1 に答える 1

1

誰かがこの問題を抱えていて、WM_ERASEBKGNDメッセージを処理して修正したことを覚えているようです。あなたはそれを試すことができます。

于 2013-01-18T22:44:09.833 に答える