如何在双缓冲 wxFrame 中使用 wxGLCanvas

How to use a wxGLCanvas in a double-buffered wxFrame?

本文关键字:wxGLCanvas wxFrame 缓冲      更新时间:2023-10-16

我的wxWidgets应用程序有一个带有wxAUIManager的主wxFrame。在四个窗格中,我分别有一个wxTreeCtrl,一个wxNotebook(在wxPanel中管理闪烁(,一个wxListBox和一个wxGLCanvas。

为了管理闪烁问题,我希望对 wxFrame 进行双缓冲。然而,这会干扰wxGLCanvas的渲染(我想这是由于wxGLCanvas本身的双缓冲性质(。

有没有办法将 wxGLCanvas 用作双缓冲 wxFrame 的子级而不会扭曲渲染?

我在Windows 10机器上使用wxWidgets 3.1.0。

更新:
对于"扭曲渲染",我的意思是我的几何体没有渲染。当主 wxFrame 的窗格调整大小时,它们会在 GLCanvas 上绘制,并保持在 GLCanvas 上绘制,即使窗格保留其原始大小也是如此。

我还尝试在 wxWidgets 示例中的多维数据集示例中重现此问题,但似乎有些事情有效。

每次 GLCanvas 更改其大小时,您都应该进行渲染。此外,在其余窗格处理此 GLCanvas 大小事件后处理它(最后一个处理将大小事件发布到 GLCanvas(。