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。

glGetTransformFeedbackVaryings对于out_a正确的报告4 x GL_FLOAT_VEC3(并且其他输出的值也是正确的),但out_a仍然是缓冲区对象中的单个 vec3。

4

0 回答 0