多个GLcanvas具有不同的上下文,可以在隐藏面板中设置setCurrent(),如何修改场景?

时间:2014-10-07 07:49:48

标签: c++ opengl wxwidgets

我正在实现一个带有两个面板的应用程序,每个面板包含一个GLcanvas。面板代表两种类型的相同事物的视图,它们的可见性由选择按钮交替显示。在paint事件中,我检查它们是否可见,以便setCurrent()画布并绘制它。

当我想要同时修改两个场景中的某些内容时,问题就出现了。例如,两个场景中的对象中的纹理变化。我无法将setCurrent()设置为隐藏面板,并且所使用的glMethods将仅应用于可见场景中。

我是否被迫设置可见其他面板进行修改然后再回来? 处理多个上下文的多个面板的最佳方法是什么?并不总是一次可见?

!这两个场景具有不同的摄像机位置,这就是我使用不同上下文的原因。 (一个画布中的球体是另一个中的立方体。

1 个答案:

答案 0 :(得分:0)

使用最新的wxWidgets中继线,当窗口未显示在屏幕上时,您可以调用SetCurrent(),因为它的父窗口是隐藏的(窗口本身仍然需要显示),请参阅this change。不幸的是,如果您使用的是已发布的版本,则没有好的解决方案,我建议的最好的方法是在一些内部队列中存储您需要执行的修改,然后在窗口变得可见时应用它们,但这非常笨拙, 当然。更新本地wx源可能会更好......