我有一个像这样的几何着色器输出:
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])被正确捕获为{{1 }} 序列。
转换反馈对象,vbo / vao和缓冲区对象都可以。问题是变换反馈只捕获4个元素数组中的第一个(但是另一个4元素数组是正确捕获的)
有没有人见过这样的行为?更改捕获的变化的顺序不会改变任何内容,12 x GL_FLOAT
(并且只有那个)总是被捕获为单个vec3。
out_a
glGetTransformFeedbackVaryings
正确报告out_a
(其他输出的值也正确),但4 x GL_FLOAT_VEC3
仍然是缓冲区对象中的单个vec3