意図は:GLSL ES 2:カラー/ベクトルの配列添え字としてユニフォームを使用するのは安全ですか?
- テクスチャをサンプリングして色を取得します。
- .x/y/z/r/g/bでカラーコンポーネントを取得する代わりに、theColor [theIntUniform]という形式を使用すると便利です。これは配列サブスクリプト記法と呼ばれます。 OpengGL ES 2.0プログラミングガイドで
:あなたは慎重に する必要が
」一つのことは、しかし、(あなたは非定数整数 式で、ベクターにアクセスした場合ということです例えば、整数変数インデックスを使用して)、これはOpenGL ES 2 .0でサポートされている ではない可能性があります。
「のOpenGL ES 2.0仕様は、特定の変数の型(すなわち、均一変数)に を除いて、この動作のサポートを強制しません。」
は、2番目の文は、「制服は配列の添え字として使用することができます」または「非constsで均一なベクトルのインデックスを作成することができます」と言っていますか?私の理解に基づいて (。https://www.khronos.org/files/opengles_shading_language.pdf P110、概要の表を参照してください、それは本当に後で意味)
、制服はシェーダのために実際に一定であるので、は次のようにそれを使用することが安全である:theColorは[theIntUniform]?
ありがとうございました!
ありがとうございました!結局のところ、少し遅くても問題はありません。結局のところ、別の動的アプローチ(コンポーネントを選択するために均一なベクトルを描く)を使用すると、さらに遅くなる可能性があります。私はちょうどこれが動作するかどうか確認したい。 – macrod
プログラミングガイドで説明されているように、動作することは保証されていませんが、変数に対しては機能しません。 – macrod
@macrod OpenGL ESシェーディング言語v1.0仕様文書のどのビットがそれを禁止しているか考えてみませんか?私が参照しているセクションでは、可変インデックスを明示的に許可しているようですが、「任意の」整数式はベクトルインデックスの配列添字にすることができます。これをコンパイル時定数式または統一式のいずれかにする必要はありません。 – solidpixel