- 名称
- 原型
- 参数
- 描述
- 错误
- 注意
- 错误

https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetProgramiv.xhtml
OpenGL API - 笔记汇总
名称glGetProgramiv ---- 返回程序对象参数。
原型void glGetProgramiv(GLuint program,
GLenum pname,
GLint *params);
参数
program 指定要查询的程序对象。 pname 指定要查询的参数。可接受符号名称有:GL_DELETE_STATUS
, GL_LINK_STATUS
, GL_VALIDATE_STATUS
, GL_INFO_LOG_LENGTH
, GL_ATTACHED_SHADERS
, GL_ACTIVE_ATOMIC_COUNTER_BUFFERS
, GL_ACTIVE_ATTRIBUTES
, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH
, GL_ACTIVE_UNIFORMS
, GL_ACTIVE_UNIFORM_BLOCKS
, GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH
, GL_ACTIVE_UNIFORM_MAX_LENGTH
, GL_COMPUTE_WORK_GROUP_SIZE
GL_PROGRAM_BINARY_LENGTH
, GL_TRANSFORM_FEEDBACK_BUFFER_MODE
, GL_TRANSFORM_FEEDBACK_VARYINGS
, GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH
, GL_GEOMETRY_VERTICES_OUT
, GL_GEOMETRY_INPUT_TYPE
, 和GL_GEOMETRY_OUTPUT_TYPE
。 params 返回请求的参数对象。
glGetProgram 返回指定程序对象的 params 参数值。
错误如果 target 是无效的值,将生成 GL_INVALID_ENUM
错误。 如果 buffer 不是从 glGenBuffers 返回的缓存名称,将生成 GL_INVALID_VALUE
错误。参数定义如下:
- GL_DELETE_STATUS 如果program 当前标记了删除,params 返回
GL_TRUE
,否则返回GL_FALSE
。 - GL_LINK_STATUS 如果上一次的 program 链接成功,则返回
GL_TRUE
,否则返回GL_FALSE
。 - GL_VALIDATE_STATUS 如果上次的 program 验证操作成功,则返回
GL_TRUE
,否则返回GL_FALSE
。 - GL_INFO_LOG_LENGTH params 返回 program 包含结尾符的日志信息的字符大小(例如,请求储存着日志信息的字符缓存大小)。如果 program 没有日志信息,则返回 0值。
- GL_ATTACHED_SHADERS params 返回已附加到 program 的 shader 对象。
- GL_ACTIVE_ATOMIC_COUNTER_BUFFERS params 返回 program 中激活的
attribute
的 atomic counter(原子计数)缓存数量。 - GL_ACTIVE_ATTRIBUTES params 返回 program 中激活的
attribute
变量的数量。 - GL_ACTIVE_ATTRIBUTE_MAX_LENGTH params 返回 program 中激活的最长的
attribute
名称,包含了空结尾符(例如,请求储存了最大的attribute
名称的字符缓存大小)。如果没有激活的attribute
存在,则返回 0。 - GL_ACTIVE_UNIFORMS params 返回 program 中激活的
uniform
变量的数量。 - GL_ACTIVE_UNIFORM_MAX_LENGTH params 返回 program 中激活的最长的
uniform
名称,包含了空结尾符(例如,请求储存了最大的uniform
名称的字符缓存大小)。如果没有激活的uniform
存在,则返回 0。 - GL_PROGRAM_BINARY_LENGTH params 返回程序二进制的长度,要想返回字节数的数量,调用 glGetProgramBinary 函数。当一个程序对象的
GL_LINK_STATUS
为GL_FALSE
,程序二进制长度为0。 - GL_COMPUTE_WORK_GROUP_SIZE params 返回三个包含了 compute 程序的本地工作组大小的整数数组,就想指定了输入的 layout qualifier(s)(布局限定符)。program 程序对象必须是之前链接成功的,且包含了 compute shader 阶段的二进制。
- GL_TRANSFORM_FEEDBACK_BUFFER_MODE params 返回一个代表当 transform feedback 缓存模式的符号常量的激活状态。这可能是
GL_SEPARATE_ATTRIBS
或是GL_INTERLEAVED_ATTRIBS
。 - GL_TRANSFORM_FEEDBACK_VARYINGS params 返回 程序的 transform feedback 模式中捕获的
varying
变量的数量。 - GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH params 返回用于 transform feedback 中最长名称的长度,包含空结尾符。
- GL_GEOMETRY_VERTICES_OUT params 返回 program 中 geometry shader 输入顶点的最大数量。
- GL_GEOMETRY_INPUT_TYPE params 返回 program 中包含了对应可接受的 primitive type(图元类型)作为 geometry shader 的 输入 的一个符号常量。
- GL_GEOMETRY_OUTPUT_TYPE params 返回 program 中包含了对应可接受的 primitive type(图元类型)作为 geometry shader 的 输出 的一个符号常量。
GL_ACTIVE_UNIFORM_BLOCKS
和 GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH
仅在 GL 版本 3.1 或以上的版本有效。
GL_GEOMETRY_VERTICES_OUT
,GL_GEOMETRY_INPUT_TYPE
和 GL_GEOMETRY_OUTPUT_TYPE
仅在 GL 版本 3.2 或以上的版本有效。
GL_COMPUTE_WORK_GROUP_SIZE
仅在 GL 版本 4.3 或以上的版本有效。
如果有错误生成,那么 params 的内容不会修改。
错误如果 program 参数不是 OpenGL 生成的,则生成 GL_INVALID_VALUE
错误。
如果 program 参数不是程序对象,则生成 GL_INVALID_OPERATION
错误。
如果 pnames 参数为 GL_GEOMETRY_VERTICES_OUT
,GL_GEOMETRY_INPUT_TYPE
,GL_GEOMETRY_OUTPUT_TYPE
,且 program 不宝行geometry shader,则生成 GL_INVALID_OPERATION
错误。
如果 pnames 参数是无效值,则生成 GL_INVALID_ENUM
错误。
如果 pnames 参数是 GL_COMPUTE_WORK_GROUP_SIZE
且 program 的 compute shader 阶段不包含二进制,则生成 GL_INVALID_OPERATION
错误。