Firebreath OpenGl窗口闪烁

时间:2013-01-18 16:27:34

标签: c++ opengl boost firebreath

我按照firebreath opengl Firebreath Opengl教程进行操作,但是当我调整页面大小或滚动页面时它会开始闪烁,所以我在网上搜索了一个解决方案,但除了一个小提示之外我没有找到任何东西< / p>

FireBreath Tips: Drawing on Windows

它说:

  

每当收到RefreshEvent时,您都必须重绘。如果您使用辅助线程进行绘制,请确保您有某种方式将消息传递给该线程,否则您将会闪烁。

所以我试图做的,找到一种方法将重绘消息传递给绘图线程,我使用Boost equivalent of 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 
   }
}

1 个答案:

答案 0 :(得分:1)

似乎我记得有人遇到此问题并通过处理WM_ERASEBKGND消息来解决此问题。你可以试试。