シェーダー ストレージ バッファーのいくつかのプロパティを取得したい:
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」です。すべてのバッファ変数のオフセットを取得するにはどうすればよいですか?