我有两个类bGLpanel和bGLpanel1派生自wxGLcanvas,bpane和bpane1分别是两个类的实例我想在wxGLcanvas上连续渲染(通过两个独立的线程)或者两者都渲染。如何做?现在只是第一个(bpane)正在我的App.wxPanel上呈现,是wxNotebook的一部分。
其他信息:
wiki.wxwidgets.org/Using_wxImage_to_load_textures_for_OpenGL我正在使用此链接中给出的示例我正在创建两个不同的类,因为需要打开两个完全不同的流,因此有两种不同的渲染方法,我不知道如何替代用这个例子渲染。
答案 0 :(得分:0)
从两个不同的线程更新显示将不起作用。 wxWidgets只会从一个主线程更新显示。如果你尝试,会发生令人讨厌的意外事情。
但是,如果您有两个wxGLCanvas小部件,那么您可以在刷新请求后依次呈现每个小部件,它看起来很好。
您有两种选择:
每次刷新时更新一个画布,并保留一个标记,以便交替完成。
每次刷新时更新两个画布。
你选择的几乎不重要。我自己会猜测#2,但尝试两种方式并不是什么大不了的。
这样的事情:
EVT_PAINT(MyApp::RenderRequest)
void MyApp::RenderRequest( wxPaintEvent& evt )
{
glPlaneA->Render( evt );
glPlaneB->Render( evt );
}