通过交替渲染或两个单独的线程连续渲染到同一wxPanel上的两个wxglcanvas

时间:2013-03-06 19:38:12

标签: c++ opengl wxwidgets

我有两个类bGLpanel和bGLpanel1派生自wxGLcanvas,bpane和bpane1分别是两个类的实例我想在wxGLcanvas上连续渲染(通过两个独立的线程)或者两者都渲染。如何做?现在只是第一个(bpane)正在我的App.wxPanel上呈现,是wxNotebook的一部分。

其他信息:

wiki.wxwidgets.org/Using_wxImage_to_load_textures_for_OpenGL我正在使用此链接中给出的示例我正在创建两个不同的类,因为需要打开两个完全不同的流,因此有两种不同的渲染方法,我不知道如何替代用这个例子渲染。

1 个答案:

答案 0 :(得分:0)

从两个不同的线程更新显示将不起作用。 wxWidgets只会从一个主线程更新显示。如果你尝试,会发生令人讨厌的意外事情。

但是,如果您有两个wxGLCanvas小部件,那么您可以在刷新请求后依次呈现每个小部件,它看起来很好。

您有两种选择:

  1. 每次刷新时更新一个画布,并保留一个标记,以便交替完成。

  2. 每次刷新时更新两个画布。

  3. 你选择的几乎不重要。我自己会猜测#2,但尝试两种方式并不是什么大不了的。

    这样的事情:

    EVT_PAINT(MyApp::RenderRequest)
    
    void MyApp::RenderRequest( wxPaintEvent& evt )
    {
      glPlaneA->Render( evt );
      glPlaneB->Render( evt );
    }