OpenGL ES 2.0 の制限に関する Apple のドキュメントによると、 「フラグメント シェーダーでは最大 8 つのテクスチャを使用できます。」
これはそれほど具体的ではないように思われるので、「フラグメント シェーダーのパスごとに最大 8 つのテクスチャ ユニットを参照できる」という意味だと思っていました。
つまり、フラグメント シェーダーの特定のパスで、テクスチャ ユニット 0 から始まる 1 つのテクスチャ ユニットのみを参照します。次のパスでは、ユニット 1 を参照します。次のパスでは、ユニット 2 などを参照します。 . 上記の仮定に基づいて、これは最大で正常に機能するはずですGL_MAX_COMBINED_TEXTURE_IMAGE_UNITS.
ただし、ユニット 7 までしか機能しないようで、ユニット 8 以上で壊れます。
これにより、最大のテクスチャ ユニットに到達するように聞こえますか? または、何か不足していますか?
実際にフラグメント シェーダーで許容されるテクスチャ ユニットの上限に達している場合は、変更可能なプログラムの配列を保持し、定義したテクスチャの数に必要な数のプログラムを実行時にビルドすることになると思います。 、8 の倍数であるテクスチャ ユニット インデックスのステップをヒットしたら、適切なプログラムに切り替えます。
これは合理的に聞こえますか、それとも何か不足していますか?