Firebreath OpenGl窗口闪烁



我遵循firebreath opengl firebreath opengl教程,它的工作,但它开始闪烁当我调整大小或滚动页面,所以我搜索了网络的解决方案,但我没有找到任何东西,除了一个小提示

FireBreath提示:在Windows上画画

上面写着:

无论何时接收到RefreshEvent,都必须重新绘制。如果你正在使用一个次要线程来绘制,确保你有某种方式将消息传递给该线程,否则你会得到闪烁

所以我想做的是,找到一种方法来传递重绘消息到绘图线程,我使用Boost等效的ManualResetEvent来强制主线程重绘,但什么也没发生。

我使用的代码:

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 
   }
}

似乎我记得有人有这个问题,并通过处理WM_ERASEBKGND消息来修复它。你可以试试

相关内容

  • 没有找到相关文章

最新更新