GL_MAX_TEXTURE_IMAGE_UNITS
プログラムにテクスチャ ユニットが存在する可能性があることは知っていOpenGL
ます。しかし、私が1つだけを使用しているとしましょう。5 つの 2D テクスチャがあるとします。それらを単一のテクスチャ ユニット (TEXTURE0) に「マップ」して、すべてをレンダリングできますか。私はこれを行うことを意味します:
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, tex1);
//specify tex data and tex params for tex1
glBindTexture(GL_TEXTURE_2D, tex2);
//specify tex data and tex params for tex1
.. 5 つのテクスチャすべてについて
レンダリング ループ:
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, tex1);
//draw
glBindTexture(GL_TEXTURE_2D, tex2);
//draw
..5 つのテクスチャすべてについて
フラグメント シェーダーでは、ゼロに初期化された sampler2d 変数を 1 つだけ使用しています (テクスチャ ユニット 0 の場合)。
これが正しく機能しない場合は、5 つの異なるテクスチャ ユニット( TEXTURE0, TEXTURE0+1, ....TEXTURE0+5
)を使用し、各テクスチャを異なるテクスチャ ユニットに「マップ」する必要があります。
最も重要な質問: 私の最初のアプローチが正しければ、いくつの 2D テクスチャ (ここでは 2D テクスチャについてのみ話しましょう) をテクスチャ ユニットに「マッピング」できますか?