2013-01-18 1 views
1

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

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

Кажется, я помню, кто-то с этой проблемой и фиксации его обработки WM_ERASEBKGND сообщение. Вы могли бы попробовать это.

+0

Это очень помогает, но почему доза GetSuppressEraseBackground() возвращает false по умолчанию? – user1748906

+0

Huh. Не знал, что это было; Я не добавил, что =] Я думаю, что это неверно, потому что это поведение по умолчанию. – taxilian

 Смежные вопросы

  • Нет связанных вопросов^_^