私のプログラムでは、状況によっては何度か使用されるテクスチャがあります。それぞれの状況において、私はある種のパラメータを適用する必要があります。OpenGL:異なるテクスチャで同じテクスチャを再利用する
追加のバッファを作成する必要がなく、何か他の用途に使用する必要があるたびにテクスチャのコピーを作成する必要がないので、より良い方法があるかどうかを知りたいですか?
私のプログラムでは、状況によっては何度か使用されるテクスチャがあります。それぞれの状況において、私はある種のパラメータを適用する必要があります。OpenGL:異なるテクスチャで同じテクスチャを再利用する
追加のバッファを作成する必要がなく、何か他の用途に使用する必要があるたびにテクスチャのコピーを作成する必要がないので、より良い方法があるかどうかを知りたいですか?
これはsampler objectsが対象です(バージョン3.3以降のコアで利用可能、ARB_sampler_objects
を使用しています)。サンプラーオブジェクトは、テクスチャイメージとそのパラメータを分離するので、複数のパラメータセットを持つテクスチャを1つ使用できます。その機能は、あなたの問題を念頭に置いて作成されました。 ARB_sampler_objects
拡張仕様から
引用:未伸長のOpenGLテクスチャで
画像データ(MIP鎖、配列、キューブ・マップの顔セット、等)とサンプリング状態の集合であると考えられている(サンプリングモード、ミップマッピング状態、座標ラッピングおよびクランプ規則など)を単一のオブジェクトに結合する。アプリケーションでは、複数のテクスチャを使用するのが一般的です。これらのテクスチャの間には同じサンプリング状態のセットが限られています。このようにテクスチャを使用するには、アプリケーションが多くのテクスチャ名を生成して設定し、アプリケーションと実装の両方にオーバーヘッドを追加する必要があります。さらに、アプリケーションが複数の方法(例えば、ミップマッピングの有無にかかわらず)でテクスチャからサンプリングしたい場合は、テクスチャの状態を変更するか、それぞれに同じイメージデータのコピーを持つ2つのテクスチャを作成する必要があります。これにより、ランタイムとメモリのコストがアプリケーションに導入される可能性があります。
また、サンプラオブジェクトを使用できない場合は、テクスチャパラメータを変更する必要があるときにいつでも変更できます。それらは一度の設定ではありません。 – datenwolf