Мерцание окна 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. Вы можете попробовать это.