次のようなジオメトリ シェーダー出力があります。
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 としてキャプチャされます。
glGetTransformFeedbackVaryings
out_a
正しくレポートするため4 x GL_FLOAT_VEC3
(および他の出力の値も同様に正しい) ですがout_a
、バッファ オブジェクト内の単一の vec3 のままです。