В моем приложении wxWidgets есть основной wxFrame с wxAUIManager.
В четырех панелях у меня есть wxTreeCtrl, wxNotebook (в wxPanel для управления мерцанием), wxListBox и wxGLCanvas соответственно.
Чтобы справиться с мерцающей проблемой, я хотел бы иметь двойной буфер wxFrame. Это, однако, нарушает рендеринг wxGLCanvas (я думаю, это связано с двойной буферизацией самого wxGLCanvas).
Есть ли способ использовать wxGLCanvas как дочерний элемент двойного буферизированного wxFrame без искажения рендеринга?
Я использую wxWidgets 3.1.0 на машине с Windows 10.
Обновить:
Под «искаженным рендерингом» я подразумеваю, что моя геометрия не отображается. При изменении размеров панелей основного wxFrame они закрашиваются поверх GLCanvas и остаются закрашенными над GLCanvas, даже если панели сохраняют свой первоначальный размер.
Я также попытался воспроизвести эту проблему в примере куба в примерах wxWidgets, но там, похоже, все работает.
IMO, вы должны делать рендеринг каждый раз, когда GLCanvas меняет свой размер. Кроме того, обработайте это событие размера GLCanvas после того, как остальные панели его обработали (последний обработанный отправляет событие размера в GLCanvas).
Других решений пока нет …