1

wxGLcanvas から派生した 2 つのクラス bGLpanel と bGLpanel1 があり、bpane と bpane1 はそれぞれ両方のクラスのインスタンスです。両方の wxGLcanvas で (2 つの別々のスレッドを介して) 継続的にレンダリングするか、代わりに両方をレンダリングします。 bpane) が私の App.wxPanel でレンダリングされています。wxPanel は wxNotebook の一部です。

追加情報:

wiki.wxwidgets.org/Using_wxImage_to_load_textures_for_OpenGL 私はこのリンクで与えられた例を使用しています.2つの完全に異なるストリームを開く必要があるため、2つの異なるクラスを作成しています.2つの異なるレンダリングメソッドがあり、それを使用して代替レンダリングを行う方法がわかりません.例。

4

1 に答える 1

0

2 つの異なるスレッドからディスプレイを更新しても機能しません。wxWidgets は、1 つのメイン スレッドからのみ表示を更新します。やろうとすると、厄介な、予期しないことが起こります。

ただし、wxGLCanvas ウィジェットが 2 つある場合は、リフレッシュ リクエストの後にそれぞれを順番にレンダリングすることができ、問題なく表示されます。

次の 2 つの選択肢があります。

  1. リフレッシュごとに 1 つのキャンバスを更新し、交互に行われるようにフラグを保持します。

  2. リフレッシュのたびに両方のキャンバスを更新します。

どちらを選ぶかはほとんど問題ではありません。私は自分で#2を推測しますが、両方を試して、どちらが好きかを確認することは大したことではありません.

このようなもの:

EVT_PAINT(MyApp::RenderRequest)

void MyApp::RenderRequest( wxPaintEvent& evt )
{
  glPlaneA->Render( evt );
  glPlaneB->Render( evt );
}
于 2013-03-06T19:43:36.767 に答える