1

90x10のマトリックスと10x1のマトリックスを乗算するGLSLシェーダーを作成しようとしています。90x1の結果は、30個の頂点のxyz値に対応します。最初の大きなマトリックスは、起動時にのみロードされます。一方、他のマトリックスは、レンダリングごとに変更できます。

これはどのように行うことができますか?最初のマトリックスはテクスチャとして保存できると思いますが、2番目のマトリックスをどうするかわかりません。

4

1 に答える 1

1

2番目の行列をfloatの均一な配列として渡すだけです。

uniform float vec10[10];

要素ごとに乗算を実行します。

それが遅すぎる場合は、1つのtexelfetchで4つの要素を読み取ることができるように、大きなテクスチャをパックしてみることができます。

ユニフォーム配列をバインドするための構文を確認するには、http://www.opengl.org/wiki/Uniform_(GLSL)を参照してください。

この2番目のマトリックスをテクスチャに格納することも完全に合法であることに注意してください。ユニフォームとして送るのではなく、そうすることによるパフォーマンスへの影響がよくわかりません。ただし、最初に機能させ、後でプロファイルを作成して最適化します。

于 2013-03-27T13:41:53.940 に答える