統一資訊
可以使用 OGL 函式 glGetProgram 和引數 GL_ACTIVE_UNIFORMS
和 GL_ACTIVE_UNIFORM_MAX_LENGTH
檢索有關程式中活動制服的資訊。
活動著色器統一變數的位置可以通過屬性的索引由 OGL 函式 glGetActiveUniform 確定。
GLuint shaderProg = ...;
std::map< std::string, GLint > unifomLocation;
GLint maxUniformLen, nUniforms;
glGetProgramiv( shaderProg, GL_ACTIVE_UNIFORMS, &nUniforms );
glGetProgramiv( shaderProg, GL_ACTIVE_UNIFORM_MAX_LENGTH, &maxUniformLen );
GLint written, size;
GLenum type;
std::vector< GLchar >uniformName( maxUniformLen );
for( int uniformInx = 0; uniformInx < nUniforms; uniformInx++ )
{
glGetActiveUniform( shaderProg, uniformInx, maxUniformLen, &written, &size, &type, &uniformName[0] );
unifomLocation[uniformName] = glGetUniformLocation( shaderProg, uniformName.data() );
}