- 名称
- 原型
- 参数
- 描述
- 错误
- 注意
- 错误
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 错误。
