我正在尝试学习如何使用统一缓冲区对象,阅读 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 正在报告一个活动的统一块,这是正确的,最多允许 15 个。在这部分代码之前或之后也没有错误标志处于活动状态。有什么建议可能会出错吗?