Мерцание окна Firebreath OpenGl

Я последовал за огненным дыханием Огненное дыхание Opengl учебник, он работает, но он начинает мерцать, когда я изменяю размер или прокручиваю страницу, поэтому я искал в Интернете решение, но не нашел ничего, кроме небольшой подсказки

FireBreath
Советы: Рисование на Windows

это говорит:

Всякий раз, когда RefreshEvent получено, вы должны перерисовать. Если вы используете вторичный поток для рисования, убедитесь, что у вас есть какой-то способ передачи сообщения в этот поток, иначе вы получите мерцание.

чтобы то, что я пытался сделать, нашел способ передать перерисованное сообщение в ветку рисования, я использовал Увеличить эквивалент 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 сообщение. Вы можете попробовать это.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]