【问题标题】:How to use a wxGLCanvas in a double-buffered wxFrame?如何在双缓冲 wxFrame 中使用 wxGLCanvas?
【发布时间】:2017-06-21 21:23:14
【问题描述】:

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

为了处理闪烁问题,我希望 wxFrame 双缓冲。然而,这会干扰 wxGLCanvas 的渲染(我猜这是由于 wxGLCanvas 本身的双缓冲性质造成的)。

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

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

更新:
“失真渲染”是指我的几何图形没有被渲染。当主 wxFrame 的窗格被调整大小时,它们会被绘制在 GLCanvas 上,并且即使窗格保持其原始大小,它们也会保持绘制在 GLCanvas 上。

我也尝试在 wxWidgets 示例中的多维数据集示例中重现此问题,但似乎可行。

【问题讨论】:

  • “干扰/扭曲渲染”是什么意思?
  • @marcks,你用的是什么版本的 wx?什么操作系统/工具包?你能举例说明你在做什么吗?
  • 看看samples/opengl/cube
  • 我已更新问题以澄清问题。我在立方体示例中没有同样的问题。不幸的是,我无法提供一个简单的例子来说明这个问题。在我看来,当 wxFrame 被双缓冲时,GLcanvas 永远不会重新绘制。

标签: c++ wxwidgets double-buffering wxglcanvas


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 2020-09-01
    • 1970-01-01
    • 2014-10-17
    • 2010-12-07
    • 1970-01-01
    • 2010-10-23
    相关资源
    最近更新 更多