Мерцание окна 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 
   }
}

1 ответ

Решение

Похоже, я помню, что кто-то имел эту проблему и исправлял ее, обрабатывая сообщение WM_ERASEBKGND. Вы можете попробовать это.

Другие вопросы по тегам