OpenGL Superbible 5 を読んで、ユニフォーム バッファ オブジェクトの使用方法を学ぼうとしています。シェーダーにユニフォーム ブロックがあります。
layout(std140) uniform SkeletonBlock
{
vec3 position[64];
vec4 orientation[64];
} Skeleton;
インデックスを取得するコードは次のとおりです。
const GLchar* uniformNames[2] =
{
"SkeletonBlock.position",
"SkeletonBlock.orientation"
};
GLuint uniformIndex[2];
glGetUniformIndices(shaderProgram, 2, uniformNames, uniformIndex);
何らかの理由で、この呼び出しは非常に高いインデックス (常に 4294967295) を示していますが、その理由はわかりません。明らかな何かが欠けているように感じます。OpenGL は 1 つのアクティブな均一ブロックを報告していますが、これは正しいもので、最大許容数は 15 です。コードのこのセクションの前後にエラー フラグはアクティブではありません。それがうまくいかない可能性のある提案はありますか?