在OpenGL ES 3.2中,有
等功能//for simplify I omit the params
GLuint glGetProgramResourceIndex(...);
void glGetProgramResourceiv(...);
GLint glGetProgramResourceLocation(...);
查询程序中命名资源的索引,检索索引为index的单个活动资源的多个属性的值,以查询程序中命名资源的位置。
还有以下功能:
void glGetUniformIndices(...);
GLuint glGetUniformBlockIndex(...);
GLint glGetUniformLocation(...);
检索命名统一块的索引,以检索统一变量的位置。
感谢@Nicol Bolas,我已经通过这个问题了解了统一位置和统一索引之间的区别Difference between uniform location and uniform index?
但是program resources index/location
和uniform index/location
之间的关系是什么?
答案 0 :(得分:1)
在旧的OpenGL版本(4.3之前)中,有几种不同的API调用来识别着色器的资源,例如,glGetActiveAttrib
表示属性,glGetActiveUniform*
表示制服或glGetActiveSubroutine*
表示子程序。
在OpenGL 4.3中,通过ARB_program_interface_query
扩展引入了查询这些资源的统一方式。使用这些命令,您可以执行与上述功能基本相同的操作(或更多功能),但无需为每种资源类型使用不同的方法。
This page有关于该主题的更多信息。