0

私はオブジェクト指向のopenGLアプリケーションを書いています。これは、いくつかの3Dモデル(いくつかの属性とメソッドを持つ自分のクラスに格納されている)をレンダリングします。これらのオブジェクトタイプの1つ(ボリュームレンダリングシェーダーを使用)では、最初に出力を固定サイズのテクスチャ(たとえば、256 * 256)にレンダリングしてから、以前のビューポートサイズに復元し、このテクスチャを2Dで画面上に拡大する必要があります。

実際の問題は、GLEventListenerのGLUオブジェクトへの参照を保存しない限り、このオブジェクトの内部から実際のビューポートサイズを取得できないことです。これは、作成するすべてのモデルに明らかに必要ありません。

ただし、GLEventListenerに静的変数を含めたくありません(2つのキャンバスを持つアプリが必要な場合はどうなりますか?)

最も重要なのはビューポートの寸法ですが、カスタムのカメラオブジェクトも参照する必要があると思います。どうすれば静的を使用せずにこれを行うことができますか?

4

2 に答える 2

1

まず、http://www.opengl.org/wiki/Common_Mistakes#The_Object_Oriented_Language_Problemをお読みください

次にglGetIntegerv、トークンGL_VIEWPORTの関数を示します。

于 2012-11-13T23:29:10.400 に答える
0

ビューポート情報と、キャンバスごとに変更されないその他のデータ(など)を1つの構造体に格納してから、各オブジェクトに1つのポインターを格納します。

于 2012-11-13T23:33:24.087 に答える