6

カスタム属性をフラグメント シェーダーに渡すことは可能GLES20.glVertexAttribPointerですか?頂点シェーダーを介して属性を渡すことができることはわかっていますが、float[] をフラグメント シェーダーに渡すにはどうすればよいですか?

4

2 に答える 2

15

いいえ。

ユニフォームをフラグメント シェーダーに渡したい場合は、簡単に行うことができます (チュートリアルを参照してください)。しかし、頂点ごとのアトリビュートに似たものが必要な場合は、それを行う意味がありません。また、属性を頂点シェーダーに渡し、頂点シェーダーで変数としてフラグメント シェーダーに渡すこともできます。それらはプリミティブ全体で補間され、フラグメント シェーダーへの入力として提供されます。

于 2012-07-19T19:44:36.603 に答える
1

ティムの答えはもちろん正しいです。

考えられる回避策は、値を 2D テクスチャに格納floatし、テクスチャ座標 (および値の数) をシェーダーに渡すことです。ただし、頂点ごとに多数の float 値がある場合、これは非常に遅くなる可能性があります (フラグメントごとのすべてのテクスチャ ルックアップのため)。もう 1 つの問題は、多数の頂点がある場合に非常に大きなテクスチャが生成されることです。とにかく、場合によっては、このアプローチが役立つことがあります。

于 2012-07-20T08:29:21.593 に答える