1

次のようなジオメトリ シェーダー出力があります。

out vec3 out_a[4];
out vec3 out_c[4];
out vec3 out_b;
out int out_d;

シェーダーのコンパイル後、リンクする前に、次のように設定しました。

GLchar *vars[5] = { "gl_Position","out_a","out_b","out_c","out_d" };

glTransformFeedbackVaryings(pgm,5,vars,GL_INTERLEAVED_ATTRIBS);

トランスフォーム フィードバックは、out_a(vec3[4] である) を単一の vec3 としてキャプチャしますが、 out_c(vec3[4] でもある) はシーケンスとして正しくキャプチャされ12 x GL_FLOATます。

変換フィードバック オブジェクト、vbo/vao、およびバッファ オブジェクトは問題ありません。問題は、変換フィードバックが 4 要素配列の最初のものだけをキャプチャしていることです (ただし、他の 4 要素配列は正しくキャプチャされます)。

誰もそのような行動を見たことがありますか?キャプチャされた変数の順序を変更しても、何も変更されませんout_a(それだけです)。常に単一の vec3 としてキャプチャされます。

glGetTransformFeedbackVaryingsout_a正しくレポートするため4 x GL_FLOAT_VEC3(および他の出力の値も同様に正しい) ですがout_a、バッファ オブジェクト内の単一の vec3 のままです。

4

0 に答える 0