3

シェーダー ストレージ バッファーのいくつかのプロパティを取得したい:

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」です。すべてのバッファ変数のオフセットを取得するにはどうすればよいですか?

4

1 に答える 1

4

variableがないため、無効なインデックスですb。ありますがb.u、ありませんbイントロスペクション APIに関する限り、存在する唯一の変数は、非ユーザー定義型の変数です。

構造は単なる集合体です。メンバーは、それらの集計の実際の値です。

于 2013-03-19T00:35:45.140 に答える