我正在尝试在我的UBO中设置一些结构,但在查询我添加的结构上的位置时,我得到的值无效。
我修改此示例以查看其工作原理。
https://www.packtpub.com/books/content/opengl-40-using-uniform-blocks-and-uniform-buffer-objects
所以我基本上补充道:
struct LightParameters
{
vec3 pos;
};
layout (std140) uniform BlobSettings
{
vec4 InnerColor;
vec4 OuterColor;
float RadiusInner;
float RadiusOuter;
LightParameters lightParam;
};
然后我尝试了:
// Query for the offsets of each block variable
const GLchar *names[] =
{
"InnerColor", "OuterColor", "RadiusInner", "RadiusOuter", "pos",
};
glGetUniformIndices(shaderLight.programId, 4+1, names, uniformBlock.loc);
其中uniformBlock.loc只是一个位置数组GLuint [5],但是通过uniformBlock.loc [4]在调用后无效,这只是我添加的结构。
有人能指出我正确的方向吗?