我想检索着色器存储缓冲区的一些属性:
struct A{
float x;
float y;
vec4 v;
};
struct B{
vec3 u;
};
layout(std430) buffer foo{
B b;
A a[];
};
假设缓冲区处于活动状态。通过 glGetProgramResourceiv() 检索缓冲区的大小可以工作并产生 48 个机器单元。但是检索缓冲区变量的偏移量和“a”的数组步幅是行不通的。
const GLenum props[] = {GL_OFFSET};
GLint* offset = new GLint;
GLuint varIndex = glGetProgramResourceIndex(_progID, GL_BUFFER_VARIABLE, "b");
glGetProgramResourceiv(_progID, GL_BUFFER_VARIABLE, varIndex, 1, props, 1, NULL, offset);
varIndex 始终为“GL_INVALID_INDEX”。如何获取所有缓冲区变量的偏移量?