多个不同上下文的GLcanvas,无法在隐藏面板中设置Current(),如何修改场景?

Multiple GLcanvas with different context, can't setCurrent() in hidden panel, how to modify scene?

本文关键字:Current 设置 何修改 修改 上下文 GLcanvas 隐藏      更新时间:2023-10-16

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

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

我是否被迫将另一个面板设置为可见以进行修改,然后再回来?处理具有多个上下文的多个面板的最佳方法是什么?

这两个场景有不同的相机位置,这就是为什么我使用不同的上下文。(一个画布中的球体是另一个画布上的立方体。

使用最新的wxWidgets trunk,当窗口由于其父窗口被隐藏而未显示在屏幕上时,您可以调用SetCurrent()(尽管窗口本身仍需要显示),请参阅此更改。不幸的是,如果您使用的是已发布的版本,则没有好的解决方案,我能建议的最好方法是将您需要进行的修改存储在某个内部队列中,然后在窗口可见后将其全部应用,但这当然相当笨拙。最好只是更新你当地的wx来源。。。