Я следил за 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
}
}
Это очень помогает, но почему доза GetSuppressEraseBackground() возвращает false по умолчанию? – user1748906
Huh. Не знал, что это было; Я не добавил, что =] Я думаю, что это неверно, потому что это поведение по умолчанию. – taxilian