索引
G
本部分含很多get函数,大部分用于获取当前设置的状态值,基本上不会用到
glGenBuffers 2.0
GLsizei n,
GLuint * buffers
生成n个未使用的缓冲区对象名称,之后可通过glBindBuffer与缓冲区对象关联。
glGenerateMipmap 3.0
GLenum target :指定纹理对象目标,可以为:GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D, GL_TEXTURE_1D_ARRAY, GL_TEXTURE_2D_ARRAY, GL_TEXTURE_CUBE_MAP, or GL_TEXTURE_CUBE_MAP_ARRAY
glGenerateTextureMipmap ( GLuint texture) 4.5+ 直接指定纹理对象
glGenFramebuffers 3.0
GLsizei n,
GLuint *ids
生成n个帧缓冲区对象名称,可通过glBindFramebuffer绑定
glGenProgramPipelines 4.1
GLsizei n,
GLuint *pipelines
生成n个管线对象名称,可通过glBindProgramPipeline绑定
glGenQueries 2.0
GLsizei n,
GLuint * ids
生成n个查询对象名称,可通过glBeginQuery绑定
glGenRenderbuffers 3.0
GLsizei n,
GLuint *renderbuffers
生成n个渲染缓冲区名称,可通过glBindRenderbuffer(GL_RENDERBUFFER, id)绑定
glGenSamplers 3.2
生成n个纹理采样器对象名称
glGenTextures 2.0
生成n个纹理对象名称
glGenTransformFeedbacks 4.0
生成n个变换反馈对象名称
glGenVertexArrays 3.0
生成n个顶点数组对象名称
glGet
获取opengl所有状态设置和功能指标数据
glGetFloat/Integer/Boolean/Doublev(GLenum pname, GLfloat… * data)
…i_v(GLenum target, GLuint index, GLboolean * data) 指定索引
…Integer64v 64位整数
当函数类型与对应查询状态不匹配时,数字转换为bool时仅0为GL_FALSE, bool转数字时对应值GL_TRUE/GL_FALSE。 颜色或者法线转换为整数时,1.0线性映射为整数最大值,-1.0线性映射为负最大值
各枚举常量:
GL_ACTIVE_TEXTURE 当前活动的纹理单元,初始值为GL_TEXTURE0, 可通过glActiveTexture设置
GL_ALIASED_LINE_WIDTH_RANGE 反锯齿线宽度范围
GL_ARRAY_BUFFER_BINDING 当前通过glBindBuffer绑定到GL_ARRAY_BUFFER的缓冲区对象名
GL_DISPATCH_INDIRECT_BUFFER_BINDING 当前绑定的GL_DISPATCH_INDIRECT_BUFFER
GL_ELEMENT_ARRAY_BUFFER_BINDING
GL_PIXEL_PACK_BUFFER_BINDING
GL_PIXEL_UNPACK_BUFFER_BINDING
GL_TEXTURE_BINDING_BUFFER
GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
GL_UNIFORM_BUFFER_BINDING
GL_VERTEX_ARRAY_BINDING
GL_RENDERBUFFER_BINDING
GL_SAMPLER_BINDING
GL_TEXTURE_BINDING_1D
GL_TEXTURE_BINDING_1D_ARRAY
GL_TEXTURE_BINDING_2D
GL_TEXTURE_BINDING_2D_ARRAY
GL_TEXTURE_BINDING_2D_MULTISAMPLE
GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY
GL_TEXTURE_BINDING_3D
GL_TEXTURE_BINDING_BUFFER
GL_TEXTURE_BINDING_CUBE_MAP
GL_TEXTURE_BINDING_RECTANGLE
GL_BLEND 是否开启混合
GL_BLEND_COLOR 当前的混合颜色,通过glBlendColor设置
GL_BLEND_SRC_RGB/ALPHA 混合函数
GL_BLEND_DST_RGB/ALPHA
GL_BLEND_EQUATION_RGB/ALPHA 混合等式
GL_COLOR_CLEAR_VALUE 当前的清除色,由glClearColor设置,默认(0,0,0,0)
GL_COLOR_LOGIC_OP 是否开启颜色逻辑操作,默认 GL_FALSE,由glLogicOp设置
GL_LOGIC_OP_MODE 颜色逻辑操作模式,默认GL_COPY
GL_COLOR_WRITEMASK 颜色写标记,默认(GL_TRUE,GL_TRUE,GL_TREUE,GL_TURE),由glColorMask 设置
GL_COMPRESSED_TEXTURE_FORMATS 获取支持的压缩格式列表,共GL_NUM_COMPRESSED_TEXTURE_FORMATS个
GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 最大的单个计算shader可访问的存储块数量
GL_MAX_COMPUTE_UNIFORM_BLOCKS最大的单个计算shader可访问的uniform块数量,最小值14
GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 最大的纹理单元个数,最少为16
GL_MAX_COMPUTE_UNIFORM_COMPONENTS 最大的uniform变量个数,最小为1024
GL_MAX_COMPUTE_ATOMIC_COUNTERS 最大的原子计数
GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS最大的原子计数缓冲区
GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 单个工作组可发起调用数(dim.x*y*z)
GL_MAX_COMPUTE_WORK_GROUP_COUNT 可发起工作组维数,通过index版本0/1/2,分别获取x/y/z维数
GL_MAX_COMPUTE_WORK_GROUP_SIZE 可编译的工作组维数,与GL_MAX_COMPUTE_WORK_GROUP_COUNT类似
GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 所有的计算shader可访问的总存储块数量
GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 所有shader可用的uniform变量数
GL_MAX_COMBINED_ATOMIC_COUNTERS
GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS
GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS
GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 顶点和片段总纹理数,最少48
GL_MAX_COMBINED_UNIFORM_BLOCKS 单个程序最大uniform块个数,最少70
GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 所有顶点uniform 块中uniform变量最大个数(word单位)
GL_MAX_DEBUG_GROUP_STACK_DEPTH 调试相关
GL_DEBUG_GROUP_STACK_DEPTH
GL_CONTEXT_FLAGS
GL_CULL_FACE glCullFace设置
GL_CURRENT_PROGRAM glUseGrogram设置
GL_DEPTH_CLEAR_VALUE 深度清除值[-1,1],默认1,glClearDepth设置
GL_DEPTH_FUNC 默认GL_LESS, glDepthFunc设置
GL_DEPTH_RANGE
GL_DEPTH_TEST
GL_DEPTH_WRITEMASK
GL_DITHER 是否支持抖动,默认GL_TRUE
GL_DOUBLEBUFFER 是否支持双缓冲
GL_STEREO
GL_DRAW_BUFFER 默认GL_BACK, 单缓冲为GL_FRONT, 通过glDrawBuffer设置
GL_DRAW_BUFFER I 由glDrawBuffers设置
GL_DRAW_FRAMEBUFFER_BINDING 通过glBindFrameBuffer绑定的帧缓冲区
GL_READ_FRAMEBUFFER_BINDING
GL_FRAGMENT_SHADER_DERIVATIVE_HINT glHint设置,默认GL_DONT_CARE
GL_IMPLEMENTATION_COLOR_READ_FORMAT 读取时推荐的数据格式、类型?参考glReadPixels
GL_IMPLEMENTATION_COLOR_READ_TYPE
GL_LAYER_PROVOKING_VERTEX flat着色时所使用的顶点,参考glProvokingVertex
GL_PROVOKING_VERTEX
GL_MAJOR_VERSION 当前上下文主版本号
GL_MINOR_VERSION
GL_MAX_3D_TEXTURE_SIZE 单一值, 最大的3d纹理大小,最小64
GL_MAX_CUBE_MAP_TEXTURE_SIZE 立方图大小,最小1024
GL_MAX_ARRAY_TEXTURE_LAYERS 最大的纹理数组层,最小256
GL_MAX_CLIP_DISTANCES 最大的裁剪距离个数,至少8个
GL_MAX_COLOR_TEXTURE_SAMPLES 最大的多采样纹理采样数
GL_MAX_DEPTH_TEXTURE_SAMPLES 深度采样数
GL_MAX_INTEGER_SAMPLES 整数类型采样数
GL_MAX_SAMPLE_MASK_WORDS
GL_SAMPLE_BUFFERS 参考glSampleCoverage
GL_SAMPLE_COVERAGE_VALUE
GL_SAMPLE_COVERAGE_INVERT
GL_SAMPLES
GL_MAX_DRAW_BUFFERS 片段程序最大输出个数,最少8,参考glDrawBuffers
GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 双源混合时最大个数(混合时混合系数使用了第二个颜色输入【比如源颜色*目标颜色】),参考glBlendFunc
GL_MAX_ELEMENTS_VERTICES 最大顶点数
GL_MAX_ELEMENTS_INDICES 最大顶点索引个数
GL_MAX_FRAGMENT_ATOMIC_COUNTERS
GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS
GL_MAX_FRAGMENT_INPUT_COMPONENTS 最少128
GL_MAX_FRAGMENT_UNIFORM_COMPONENTS最少1024
GL_MAX_FRAGMENT_UNIFORM_VECTORS最少1024/4
GL_MAX_FRAGMENT_UNIFORM_BLOCKS最少12
GL_MAX_FRAMEBUFFER_WIDTH 最少16k
GL_MAX_FRAMEBUFFER_HEIGHT
GL_MAX_FRAMEBUFFER_LAYERS 最少2048
GL_MAX_FRAMEBUFFER_SAMPLES 最少4
GL_MAX_GEOMETRY_ATOMIC_COUNTERS
GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS
GL_MAX_GEOMETRY_INPUT_COMPONENTS 64
GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 128
GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 16
GL_MAX_GEOMETRY_UNIFORM_BLOCKS 12
GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 1024
GL_MIN_MAP_BUFFER_ALIGNMENT glMapBuffer/Range最小的对齐字节数,至少64
GL_MAX_LABEL_LENGTH glObjectLabel最大label长度
GL_MAX_PROGRAM_TEXEL_OFFSET 纹理查找最大像素偏移,最小7
GL_MIN_PROGRAM_TEXEL_OFFSET 最小-8
GL_MAX_RECTANGLE_TEXTURE_SIZE 最小1024
GL_MAX_RENDERBUFFER_SIZE
GL_MAX_TEXTURE_BUFFER_SIZE 最小64k
GL_MAX_TEXTURE_SIZE
GL_MAX_TEXTURE_IMAGE_UNITS 最小16
GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 最小8
GL_MAX_TEXTURE_LOD_BIAS
GL_MAX_SERVER_WAIT_TIMEOUT 最大超时值,参考glWaitSync
GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS
GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS
GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS
GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS
GL_MAX_UNIFORM_BUFFER_BINDINGS
GL_MAX_UNIFORM_BLOCK_SIZE 至少16k
GL_MAX_UNIFORM_LOCATIONS 至少1024
GL_MAX_VARYING_COMPONENTS 至少60
GL_MAX_VARYING_VECTORS 至少60/4
GL_MAX_VARYING_FLOATS 至少32
GL_MAX_VERTEX_ATOMIC_COUNTERS
GL_MAX_VERTEX_ATTRIBS 至少16
GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS
GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS至少16
GL_MAX_VERTEX_UNIFORM_COMPONENTS 1024
GL_MAX_VERTEX_UNIFORM_VECTORS 256
GL_MAX_VERTEX_OUTPUT_COMPONENTS 64
GL_MAX_VERTEX_UNIFORM_BLOCKS 12
GL_MAX_VIEWPORT_DIMS
GL_MAX_VIEWPORTS 16
GL_NUM_COMPRESSED_TEXTURE_FORMATS
GL_NUM_EXTENSIONS
GL_NUM_PROGRAM_BINARY_FORMATS 个数
GL_PROGRAM_BINARY_FORMATS 格式
GL_NUM_SHADER_BINARY_FORMATS
GL_PACK_ALIGNMENT 默认4,参考glPixelStore
GL_PACK_IMAGE_HEIGHT
GL_PACK_LSB_FIRST false
GL_PACK_ROW_LENGTH
GL_PACK_SKIP_IMAGES
GL_PACK_SKIP_PIXELS
GL_PACK_SKIP_ROWS
GL_PACK_SWAP_BYTES
GL_POINT_FADE_THRESHOLD_SIZE 点最小截取值,默认1.0,参考glPointParameter
GL_PRIMITIVE_RESTART_INDEX
GL_PROGRAM_PIPELINE_BINDING 当前绑定的程序管线对象
GL_PROGRAM_POINT_SIZE 是否启用gl_PointSize
GL_POINT_SIZE glPointSize
GL_POINT_SIZE_GRANULARITY
GL_POINT_SIZE_RANGE
GL_LINE_SMOOTH
GL_LINE_SMOOTH_HINT 参考glHint
GL_LINE_WIDTH 参考glLineWidth
GL_SMOOTH_LINE_WIDTH_RANGE
GL_SMOOTH_LINE_WIDTH_GRANULARITY
GL_POLYGON_OFFSET_FACTOR 参考glPolygonOffset
GL_POLYGON_OFFSET_UNITS
GL_POLYGON_OFFSET_FILL
GL_POLYGON_OFFSET_LINE
GL_POLYGON_OFFSET_POINT
GL_POLYGON_SMOOTH
GL_POLYGON_SMOOTH_HINT
GL_READ_BUFFER
GL_SCISSOR_BOX
GL_SCISSOR_TEST
GL_SHADER_STORAGE_BUFFER_BINDING
GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT
GL_SHADER_STORAGE_BUFFER_START
GL_SHADER_STORAGE_BUFFER_SIZE
GL_STENCIL_BACK_FAIL
GL_STENCIL_BACK_FUNC
GL_STENCIL_BACK_PASS_DEPTH_FAIL
GL_STENCIL_BACK_PASS_DEPTH_PASS
GL_STENCIL_BACK_REF
GL_STENCIL_BACK_VALUE_MASK
GL_STENCIL_BACK_WRITEMASK
GL_STENCIL_CLEAR_VALUE
GL_STENCIL_FAIL
GL_STENCIL_FUNC
GL_STENCIL_PASS_DEPTH_FAIL
GL_STENCIL_PASS_DEPTH_PASS
GL_STENCIL_REF
GL_STENCIL_TEST
GL_STENCIL_VALUE_MASK
GL_STENCIL_WRITEMASK
GL_TIMESTAMP
GL_TRANSFORM_FEEDBACK_BUFFER_START glBindBufferRange
GL_TRANSFORM_FEEDBACK_BUFFER_SIZE
GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT
GL_UNIFORM_BUFFER_BINDING
GL_UNIFORM_BUFFER_SIZE
GL_UNIFORM_BUFFER_START
GL_UNPACK_ALIGNMENT glPixelStore
GL_UNPACK_IMAGE_HEIGHT
GL_UNPACK_LSB_FIRST
GL_UNPACK_LSB_FIRST
GL_UNPACK_ROW_LENGTH
GL_UNPACK_SKIP_IMAGES
GL_UNPACK_SKIP_PIXELS
GL_UNPACK_SKIP_ROWS
GL_UNPACK_SWAP_BYTES
GL_VERTEX_BINDING_DIVISOR
GL_VERTEX_BINDING_OFFSET
GL_VERTEX_BINDING_STRIDE
GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET
GL_MAX_VERTEX_ATTRIB_BINDINGS
GL_VIEWPORT
GL_VIEWPORT_BOUNDS_RANGE
GL_VIEWPORT_INDEX_PROVOKING_VERTEX
GL_VIEWPORT_SUBPIXEL_BITS
GL_MAX_ELEMENT_INDEX
glGetActiveAtomicCounterBufferiv 4.2
获取指定程序指定的Atomic Counter Buffer信息
Gluint program,
GLuint bufferIndex,
GLenum pname,
GL_ATOMIC_COUNTER_BUFFER_BINDING 绑定点索引
_DATA_SIZE 缓冲区对象大小
_ACTIVE_ATOMIC_COUNTERS 计数器个数
_ACTIVE_ATOMIC_COUNTER_INDICES 获取各计数器指示索引列表
_REFERENCED_BY_VERTEX/TESS_CONTROL/FRAGMENT/…_SHADER 是否给顶点、片段…程序引用
GLint *params
glGetActiveAttrib 2.0
获取程序的指定的属性信息名称、类型、大小,包括内置gl_属性和自定义属性
GLuint program,
GLuint index, 属性索引
GLsizei bufSize, 存储属性名称的缓冲区长度
GLsizei *length, 获取的名称长度(不包括\0), 不需要返回时可传递0
GLint *size, 属性大小(size个type)
GLenum *type, 属性类型
GLchar *name 属性名称
程序属性个数可通过glGetProgram(program, GL_ACTIVE_ATTRIBUTES, &attrCount)获取
GLint attrCount;
glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES, &attrCount);
char attrName[255];
GLint attrSize;
GLenum attrType;
for(GLint i=0; i<attrCount; ++i)
{
glGetActiveAttrib(program, i, 255, 0, &attrSize, &attrType, attrName);
std::cout << i << '\t' << attrSize << "\t" << attrName << std::endl;
}
glGetActiveSubroutineName 4.0
获取子程序名称
GLuint program,
GLenum shadertype, :
GL_VERTEX_SHADER, GL_TESS_CONTROL_SHADER, GL_TESS_EVALUATION_SHADER, GL_GEOMETRY_SHADER or GL_FRAGMENT_SHADER
GLuint index,
GLsizei bufsize, 名称缓冲区大小
GLsizei *length, 返回名称长度
GLchar *name 返回名称
glGetActiveSubroutineUniformiv 4.0
获取子程序uniform信息
GLuint program,
GLenum shadertype,
GLuint index,
GLenum pname:
GL_NUM_COMPATIBLE_SUBROUTINES, uniform匹配的子程序个数
GL_COMPATIBLE_SUBROUTINES, 获取匹配的子程序索引列表
GL_UNIFORM_SIZE uniform大小,非数组时为1,数组时为数组长度
GL_UNIFORM_NAME_LENGTH 名称长度,包含\0
GLint *values
glGetActiveSubroutineUniformName 4.0
获取SubroutineUniform名称
GLuint program,
GLenum shadertype,
GLuint index,
GLsizei bufsize,
GLsizei *length,
GLchar *name
glGetActiveUniform 2.0
获取Uniform变量名称、类型、大小信息,与glGetActiveAttrib类似
GLuint program,
GLuint index,
GLsizei bufSize,
GLsizei *length,
GLint *size,
GLenum *type,
GLchar *name
获取数据使用 glGetUniform
std::cout << "uniforms:\n" ;
GLint uniformCount;
glGetProgramiv(program, GL_ACTIVE_UNIFORMS, &uniformCount);
char uniformName[255];
GLint uniformSize;
GLenum uniformType;
for(GLint i=0; i<uniformCount; ++i)
{
glGetActiveUniform(program, i, 255, 0, &uniformSize, &uniformType, uniformName);
std::cout << '\t' << i << '\t' << uniformSize << '\t' << uniformName << std::endl;
}
glGetActiveUniformsiv 3.1
一次获取多个Uniform变量名称、类型、大小信息,与glGetActiveUniform类似
GLuint program,
GLsizei uniformCount,
const GLuint *uniformIndices,
GLenum pname,
GLint *params
glGetActiveUniformName 3.1
获取Uniform变量名称
GLuint program,
GLuint uniformIndex,
GLsizei bufSize,
GLsizei *length,
GLchar *uniformName
glGetActiveUniformBlockiv 3.1
获取uniformBlock信息, 与 glGetActiveAtomicCounterBufferiv类似
GLuint program,
GLuint uniformBlockIndex,
GLenum pname,
GL_UNIFORM_BLOCK_BINDING 绑定点
GL_UNIFORM_BLOCK_DATA_SIZE 块大小
GL_UNIFORM_BLOCK_NAME_LENGTH 块名称长度
GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 块中 uniform变量个数
GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 块中 uniform变量对应的索引列表,有用吗?
GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX/TESS_CONTROL/TESS_EVALUATION/GEOMETRY/FRAGMENT/COMPUTE_SHADER 是否被各shader引用
GLint *params
glGetActiveUniformBlockName 3.1
获取名称
GLuint program,
GLuint uniformBlockIndex,
GLsizei bufSize,
GLsizei *length,
GLchar *uniformBlockName
glGetAttachedShaders 2.1
获取program关联的所有shader
GLuint program,
GLsizei maxCount,
GLsizei *count, //返回个数,不需要可以传入0
GLuint *shaders
glGetAttribLocation 2.0
根据名称获取属性的位置
GLuint program,
const GLchar *name
保留的gl_名称前缀返回-1
glGetBufferParameteriv 2.0
获取Buffer信息,大小、访问标识、锁定范围等等
GLenum target, GL_ARRAY_BUFFER GL_ATOMIC_COUNTER_BUFFER…等等
GLenum value,
GL_BUFFER_ACCESS GL_BUFFER_ACCESS_FLAGS glMapBuffer、glMapBufferRange访问标识
GL_BUFFER_IMMUTABLE_STORAGE 是否immutable(不可改变)
GL_BUFFER_MAPPED 是否被mapped
GL_BUFFER_MAP_LENGTH GL_BUFFER_MAP_OFFSET map范围
GL_BUFFER_SIZE 大小
GL_BUFFER_STORAGE_FLAGS 存储访问标识:GL_MAP_READ_BIT | GL_MAP_WRITE_BIT | GL_DYNAMIC_STORAGE_BIT | GL_MAP_WRITE_BIT
GL_BUFFER_USAGE 用途GL_STREAM/STATIC/DYNAMIC_DRAW/READ/COPY,参考glBufferData
GLint * data
glGetBufferParameteri64v 3.2
glGetNamedBufferParameteriv 4.5
glGetBufferPointerv 2.0
获取mapped数据指针,未map返回0,(与glMapBuffer返回值相同?)
GLenum target, GL_ARRAY_BUFFER GL_ATOMIC_COUNTER_BUFFER…等等
GLenum pname, 固定的GL_BUFFER_MAP_POINTER
GLvoid ** params
GlGetNamedBufferPointerv 4.5
glGetBufferSubData 2.0
直接获取buffer数据,如果已经mapped则产生错误
GLenum target, GL_ARRAY_BUFFER GL_ATOMIC_COUNTER_BUFFER…等等
GLintptr offset,
GLsizeiptr size,
GLvoid * data
glGetNamedBufferSubData 4.5
glGetCompressedTexImage 2.0
获取压缩纹理数据
GLenum target, GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP_POSITIVE_X…等等
GLint level,
GLvoid * pixels 目标数据地址,当GL_PIXEL_PACK_BUFFER不为0时,表示对应缓冲区偏移量
可以使用glGetTexLevelParameter查询纹理是否压缩,以及所使用的压缩格式和大小
glGetnCompressedTexImage 4.5指定数据大小
glGetCompressedTextureImage 4.5 指定纹理id
glGetCompressedTextureSubImage 4.5
获取压缩纹理子区域,与getCompressedTexImage类似
GLuint texture,
GLint level,
GLint xoffset,
GLint yoffset,
GLint zoffset, //cube map时使用[0,5]指定对应的面+x –x +y –y +z - z
GLsizei width,
GLsizei height,
GLsizei depth,
GLsizei bufSize,
void *pixels
偏移和宽高必须为压缩块大小的整数倍GL_PACK_COMPRESSED_BLOCK_WIDTH/HEIGHT/DEPTH
glGetDebugMessageLog 4.3
获取日志信息
glGetError 2.0
返回错误代码
调用后错误代码将重置为GL_NO_ERROR,当同时存在多个错误时,一次调用仅重置一个错误位
GL_NO_ERROR
GL_INVALID_ENUM 无效的枚举
GL_INVALID_VALUE 无效的数值,超界
GL_INVALID_OPERATION 无效的操作,当前状态不允许
GL_INVALID_FRAMEBUFFER_OPERATION 帧缓冲区未准备好
GL_OUT_OF_MEMORY
GL_STACK_UNDERFLOW
GL_STACK_OVERFLOW
glGetFragDataIndex 3.3
获取片段输出数据对应索引, 返回0/1分别对应颜色混合等式的第一、第二个输入项
GLuint program,
const char * name
参考glBindFragDataLocationIndexed
glGetFragDataLocation
返回片段程序输出变量对应的颜色缓冲区索引
GLuint program,
const char * name
参考glBindFragDataLocation
glGetFramebufferAttachmentParameteriv 3.0
获取帧缓冲区附件类型、大小等信息,包括默认绘制缓冲区
GLenum target, : GL_DRAW_FRAMEBUFFER, GL_READ_FRAMEBUFFER or GL_FRAMEBUFFER
GLenum attachment,
如果查询帧缓冲区对象为:GL_DEPTH_ATTACHMENT, GL_STENCIL_ATTACHMENT GL_DEPTH_STENCIL_ATTACHMENT, or GL_COLOR_ATTACHMENTi,
如果是默认缓冲区则为:GL_FRONT_LEFT, GL_FRONT_RIGHT, GL_BACK_LEFT, GL_BACK_RIGHT, GL_DEPTH or GL_STENCIL
GLenum pname,
GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 附件类型:GL_NONE, GL_FRAMEBUFFER_DEFAULT, GL_TEXTURE, or GL_RENDERBUFFER
GL_FRAMEBUFFER_ATTACHMENT_RED/GREEN/BLUE/ALPHA/DEPTH/STENCIL_SIZE 各成分大小(位)
GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 成分类型:GL_FLOAT, GL_INT, GL_UNSIGNED_INT, GL_SIGNED_NORMALIZED,
GL_UNSIGNED_NORMALIZED
GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 颜色编码GL_LINEAR or GL_SRGB
GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 如果是renderbuffer或texture则为其id
GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 用于texture类型附件
GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE cubemap texture时所使用的面
GL_FRAMEBUFFER_ATTACHMENT_LAYERED 是否使用多层纹理
GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 仅使用多层纹理某一层时获取对应层号(GL_FRAMEBUFFER_ATTACHMENT_LAYERED==GL_FALSE)
GLint *params
glGetNamedFramebufferAttachmentParameteriv 4.5
glGetFramebufferParameteriv 4.3
获取帧缓冲区对象相关信息,包括默认绘制缓冲区
GLenum target, GL_DRAW_FRAMEBUFFER, GL_READ_FRAMEBUFFER
GLenum pname,
帧缓冲区对象可以查询:
GL_FRAMEBUFFER_DEFAULT_WIDTH
_HEIGHT
_LAYERS
_SAMPLES
_FIXED_SAMPLE_LOCATIONS
默认缓冲区和帧缓冲区可查询:
GL_DOUBLEBUFFER 是否双缓冲
GL_STEREO 是否支持立体
GL_IMPLEMENTATION_COLOR_READ_FORMAT 实现最优的颜色读取格式、类型
GL_IMPLEMENTATION_COLOR_READ_TYPE
GL_SAMPLES
GL_SAMPLE_BUFFERS
GLint *params
参考glFramebufferParameteri
glGetGraphicsResetStatus 4.5
获取上下文reset 状态,返回:
GL_NO_ERROR 上一次调用以来未reset
GL_GUILTY_CONTEXT_RESET 由当前上下文引起
GL_INNOCENT_CONTEXT_RESET 不是当前上下文引起
GL_UNKNOWN_CONTEXT_RESET 未知
Reset通知在上下文创建时确定,如果GetIntegerv(GL_RESET_NOTIFICATION_STRATEGY)返回 GL_NO_RESET_NOTIFICATION,则接收不到通知,函数永远返回GL_NO_ERROR
glGetInternalformativ 4.2
获取内部格式的支持情况
GLenum target,
GLenum internalformat,
GLenum pname,
GL_NUM_SAMPLE_COUNTS 支持的采样数个数,比如只支持4像素采样,则返回1
GL_SAMPLES 采样数列表,从大往小排,共GL_NUM_SAMPLE_COUNTS返回的个数
GL_INTERNALFORMAT_SUPPORTED 是否支持该格式
GL_INTERNALFORMAT_PREFERRED internalformat是否是推荐的格式
GL_INTERNALFORMAT_RED/GREEN/BLUE/ALPHA/DEPTH/STENCIL/SHARED_SIZE 各成分大小,压缩格式时为非压缩时大小,不存在或不支持返回0
GL_INTERNALFORMAT_RED/GREEN/BLUE/ALPHA/DEPTH/STENCIL_TYPE 各成分类型
GL_MAX_WIDTH, GL_MAX_HEIGHT, GL_MAX_DEPTH, or GL_MAX_LAYERS 改格式纹理对应的最大值
GL_MAX_COMBINED_DIMENSIONS?
GL_COLOR_COMPONENTS GL_DEPTH_COMPONENTS or GL_STENCIL_COMPONENTS是否含颜色、深度或者模板数据
GL_COLOR_RENDERABLE, GL_DEPTH_RENDERABLE or GL_STENCIL_RENDERABLE ?是否是可渲染的颜色、深度或者模板数据
GL_FRAMEBUFFER_RENDERABLE or GL_FRAMEBUFFER_RENDERABLE_LAYERED:返回GL_FULL_SUPPORT, GL_CAVEAT_SUPPORT or GL_NONE,表示对格式是支持、有限的支持,或者不支持
GL_FRAMEBUFFER_BLEND 是否支持混合
GL_READ_PIXELS 返回GL_FULL_SUPPORT, GL_CAVEAT_SUPPORT or GL_NONE,表示对格式是支持、有限的支持,或者不支持读取
GL_READ_PIXELS_FORMAT or GL_READ_PIXELS_TYPE 获取推荐的用于glReadPixel的读取格式和类型
GL_TEXTURE_IMAGE_FORMAT or GL_TEXTURE_IMAGE_TYPE 获取推荐的用于glTexImage2D的源数据格式和类型
GL_GET_TEXTURE_IMAGE_FORMAT or GL_GET_TEXTURE_IMAGE_TYPE获取推荐的用于glGetTexImage2D的源数据格式和类型
GL_MIPMAP 是否支持mipmap
GL_GENERATE_MIPMAP or GL_AUTO_GENERATE_MIPMAP 返回GL_FULL_SUPPORT, GL_CAVEAT_SUPPORT and GL_NONE表示支持程度
GL_COLOR_ENCODING 颜色编码GL_LINEAR or GL_SRGB或者GL_NONE(深度、模板。。)
GL_SRGB_READ, or GL_SRGB_WRITE srgb读写支持,返回GL_FULL_SUPPORT, GL_CAVEAT_SUPPORT, or GL_NONE
GL_FILTER 是否支持过滤,仅GL_NEAREST or GL_NEAREST_MIPMAP之外过滤模式
GL_IMAGE_TEXEL_SIZE 作为纹理时的大小?
GL_IMAGE_COMPATIBILITY_CLASS 作为纹理时所属类别(各成分size,如GL_IMAGE_CLASS_4_X_8、GL_IMAGE_CLASS_10_10_10_2)
GL_IMAGE_PIXEL_FORMAT or GL_IMAGE_PIXEL_TYPE 作为纹理时的格式和类型
GL_IMAGE_FORMAT_COMPATIBILITY_TYPE, 作为纹理时匹配类别:GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE/CLASS.
GL_TEXTURE_COMPRESSED 是否是压缩格式
GL_TEXTURE_COMPRESSED_BLOCK_WIDTH, GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT or GL_TEXTURE_COMPRESSED_BLOCK_SIZE 压缩块的宽高、大小
GL_TEXTURE_VIEW 对glTextureView的支持程度
GL_VIEW_COMPATIBILITY_CLASS 作为texture view时的类别, GL_VIEW_CLASS_128_BITS, GL_VIEW_CLASS_S3TC_DXT1_RGB。。等等
GL_CLEAR_BUFFER 对glClearBufferData and glClearBufferSubData的支持程度
GL_CLEAR_TEXTURE 对glClearTexImage and glClearTexSubImage的支持程度
GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST or GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 同时作为纹理和深度或模板测试时的支持程度
GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE or GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE同时作为纹理和深度或模板写时的支持程度
GL_VERTEX_TEXTURE, GL_TESS_CONTROL_TEXTURE, GL_TESS_EVALUATION_TEXTURE, GL_GEOMETRY_TEXTURE, GL_FRAGMENT_TEXTURE, or GL_COMPUTE_TEXTURE 作为纹理的支持程度,返回GL_FULL_SUPPORT, GL_CAVEAT_SUPPORT, or GL_NONE
GL_TEXTURE_SHADOW, GL_TEXTURE_GATHER or GL_TEXTURE_GATHER_SHADOW 对阴影、gather指令的支持程度返回GL_FULL_SUPPORT…
GL_SHADER_IMAGE_LOAD, GL_SHADER_IMAGE_STORE or GL_SHADER_IMAGE_ATOMIC 返回对加载、存储. Atomic的支持程度
GLsizei bufSize, 返回的缓冲区大小
GLint *params
glGetMultisamplefv 3.2
获取采样的相对位置信息,返回值为两个浮点数,(0.5, 0.5)表示对应像素中心
GLenum pname, GL_SAMPLE_POSITION
GLuint index, 采样索引, 范围为[0, glGet(GL_SAMPLES))
GLfloat *val
glGetObjectLabel 4.3
获取对象标记
GLenum identifier, 类别:GL_BUFFER, GL_SHADER, GL_PROGRAM, GL_VERTEX_ARRAY, GL_QUERY, GL_PROGRAM_PIPELINE, GL_TRANSFORM_FEEDBACK, GL_SAMPLER, GL_TEXTURE, GL_RENDERBUFFER, GL_FRAMEBUFFER
GLuint name, 名称/id
GLsizei bifSize, 缓冲区大小
GLsizei * length,
char * label
设置标记使用glObjectLabel
glGetObjectPtrLabel 4.3
获取ptr指定的同步对象标记
void * ptr,
GLsizei bifSize,
GLsizei * length,
char * label
设置标记使用glObjectPtrLabel
glGetPointerv 4.3
获取debug callback函数指针或者debug callback自定义参数指针
GLenum pname, GL_DEBUG_CALLBACK_FUNCTION or GL_DEBUG_CALLBACK_USER_PARAM
GLvoid ** params
glGetProgramiv 2.0
获取程序对象相关信息
GLuint program,
GLenum pname,:
GL_DELETE_STATUS 是否标记为删除
GL_LINK_STATUS 是否连接成功
GL_VALIDATE_STATUS 是否验证成功
GL_INFO_LOG_LENGTH log信息长度,包含\0
GL_ATTACHED_SHADERS 关联的shader个数
GL_ACTIVE_ATOMIC_COUNTER_BUFFERS ATOMIC_COUNTER_BUFFER个数
GL_ACTIVE_ATTRIBUTES 属性个数
GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 最大的属性名称长度
GL_ACTIVE_UNIFORMS uniform变量个数
GL_ACTIVE_UNIFORM_MAX_LENGTH 最大的uniform属性名称长度
GL_PROGRAM_BINARY_LENGTH 编译后的程序长度
GL_COMPUTE_WORK_GROUP_SIZE 返回3个整数对应程序的计算shader dim.xyz
GL_TRANSFORM_FEEDBACK_BUFFER_MODE : GL_SEPARATE_ATTRIBS or GL_INTERLEAVED_ATTRIBS
GL_TRANSFORM_FEEDBACK_VARYINGS 变换反馈捕获的变量个数
GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 变换反馈捕获的最长变量名称长度,包括\0
GL_GEOMETRY_VERTICES_OUT 最大的输出顶点数
GL_GEOMETRY_INPUT_TYPE 输入图元类型
GL_GEOMETRY_OUTPUT_TYPE 输出图元类型
GLint *params
glGetProgramBinary 4.1
获取程序编译链接后的二进制数据
GLuint program,
GLsizei bufsize,
GLsizei *length,
GLenum *binaryFormat, 二进制格式,可能和实现相关
void *binary
获取的二进制数据可使用glProgramBinary加载到程序
长度可通过glGetProgram(GL_PROGRAM_BINARY_LENGTH)获取
glGetProgramInfoLog 2.0
获取最后链接或验证程序时产生的日志信息
GLuint program,
GLsizei maxLength,
GLsizei *length,
GLchar *infoLog
返回长度包括\0, 可通过glGetProgram(GL_INFO_LOG_LENGTH)获取
glGetProgramInterface 4.3
获取程序的所有接口信息
GLuint program,
GLenum programInterface,接口标识:
GL_UNIFORM
GL_UNIFORM_BLOCK
GL_ATOMIC_COUNTER_BUFFER
GL_PROGRAM_INPUT 第一个shader阶段输入
GL_PROGRAM_OUTPUT 最后一个shader阶段输出
GL_VERTEX_SUBROUTINE, GL_TESS_CONTROL_SUBROUTINE, GL_TESS_EVALUATION_SUBROUTINE, GL_GEOMETRY_SUBROUTINE, GL_FRAGMENT_SUBROUTINE, GL_COMPUTE_SUBROUTINE 各子程序
GL_VERTEX_SUBROUTINE_UNIFORM, GL_TESS_CONTROL_SUBROUTINE_UNIFORM, GL_TESS_EVALUATION_SUBROUTINE_UNIFORM, GL_GEOMETRY_SUBROUTINE_UNIFORM, GL_FRAGMENT_SUBROUTINE_UNIFORM, GL_COMPUTE_SUBROUTINE_UNIFORM各子程序uniform
GL_TRANSFORM_FEEDBACK_VARYING
GL_BUFFER_VARIABLE
GL_SHADER_STORAGE_BLOCK
GL_TRANSFORM_FEEDBACK_BUFFER
GLenum pname, 信息类型:
GL_ACTIVE_RESOURCES 返回对应的数据
GL_MAX_NAME_LENGTH 最长的名称长度,不可用于GL_ATOMIC_COUNTER_BUFFER
GL_MAX_NUM_ACTIVE_VARIABLES 最大的变量个数,用于GL_UNIFORM_BLOCK, GL_ATOMIC_COUNTER_BUFFER, or GL_SHADER_STORAGE_BLOCK
GL_MAX_NUM_COMPATIBLE_SUBROUTINES 用于各_SUBROUTINE_UNIFORM
GLint * params
glGetProgramPipeline 4.1
获取管线对象活动程序和各shader以及日志信息长度
GLuint pipeline,
GLenum pname,:
GL_ACTIVE_PROGRAM
GL_VERTEX_SHADER GL_TESS_CONTROL_SHADER GL_TESS_EVALUATION_SHADER GL_TESS_EVALUATION_SHADER
GL_GEOMETRY_SHADER GL_FRAGMENT_SHADER
GL_INFO_LOG_LENGTH
GLint *params
glGetProgramPipelineInfoLog 4.1
获取日志信息
GLuint pipeline,
GLsizei bufSize,
GLsizei *length,
GLchar *infoLog
glGetProgramResource 4.3
相比glGetProgramInterface提供了更多的信息,一次获取接口的属性个数、属性列表、属性长度
GLuint program,
GLenum programInterface,
GLuint index,
GLsizei propCount,
const Glenum * props, //返回属性类型
GL_NAME_LENGTH
GL_TYPE
GL_ARRAY_SIZE
GL_OFFSET
GL_BLOCK_INDEX
GL_ARRAY_STRIDE
GL_MATRIX_STRIDE
GL_IS_ROW_MAJOR
GL_ATOMIC_COUNTER_BUFFER_INDEX
GL_TEXTURE_BUFFER
GL_BUFFER_BINDING
GL_BUFFER_DATA_SIZE
GL_NUM_ACTIVE_VARIABLES
GL_ACTIVE_VARIABLES
GL_REFERENCED_BY_VERTEX_SHADER
GL_REFERENCED_BY_TESS_CONTROL_SHADE
GL_REFERENCED_BY_TESS_EVALUATION_SHADER
GL_REFERENCED_BY_GEOMETRY_SHADER
GL_REFERENCED_BY_FRAGMENT_SHADER
GL_REFERENCED_BY_COMPUTE_SHADER
GL_NUM_COMPATIBLE_SUBROUTINES
GL_COMPATIBLE_SUBROUTINES
GL_TOP_LEVEL_ARRAY_SIZE
GL_TOP_LEVEL_ARRAY_STRIDE
GL_LOCATION
GL_LOCATION_INDEX
GL_IS_PER_PATCH
GL_LOCATION_COMPONENT
GL_TRANSFORM_FEEDBACK_BUFFER_INDEX
GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE
GLsizei bufSize,
GLsizei * length,
GLint * params
glGetProgramResourceIndex 4.3
根据名称查询对应的索引
glGetProgramResourceLocation 4.3
根据名称查询对应位置
glGetProgramResourceName 4.3
根据索引查询名称
glGetProgramStage 4.0
查询程序各阶段子程序信息
GLuint program,
GLenum shadertype,:GL_VERTEX_SHADER, GL_TESS_CONTROL_SHADER, GL_TESS_EVALUATION_SHADER, GL_GEOMETRY_SHADER ,GL_FRAGMENT_SHADER
GLenum pname,: GL_ACTIVE_SUBROUTINE_UNIFORMS, GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS, GL_ACTIVE_SUBROUTINES,
GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH, or GL_ACTIVE_SUBROUTINE_MAX_LENGTH
GLint *values
glGetQueryIndexediv 4.0
根据索引获取查询信息:查询ID或使用的位数, 参考glBeginQueryIndexed
GLenum target, GL_SAMPLES_PASSED, GL_ANY_SAMPLES_PASSED, GL_ANY_SAMPLES_PASSED_CONSERVATIVE GL_PRIMITIVES_GENERATED,
GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN, GL_TIME_ELAPSED, or GL_TIMESTAMP
GLuint index,
GLenum pname,
GL_CURRENT_QUERY 查询id
GL_QUERY_COUNTER_BITS 位数
GLint * params
glGetQueryiv 2.0
获取查询信息:ID或使用的位数
GLenum target, GL_SAMPLES_PASSED, GL_ANY_SAMPLES_PASSED, GL_ANY_SAMPLES_PASSED_CONSERVATIVE GL_PRIMITIVES_GENERATED,
GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN, GL_TIME_ELAPSED, or GL_TIMESTAMP
GLenum pname,
GL_CURRENT_QUERY 查询id
GL_QUERY_COUNTER_BITS 位数
GLint * params
glGetQueryObjectiv 2.0
获取查询结果
GLuint id,
GLenum pname,:
GL_QUERY_RESULT 获取查询结果,会等待查询之间渲染完成
GL_QUERY_RESULT_AVAILABLE 查询结果是否可用
GL_QUERY_RESULT_NO_WAIT 获取查询采样通过数,但不等待,不可用时params值不会被修改
GLint * params 如果绑定了GL_QUERY_RESULT_BUFFER,此参数为偏移量,否则为客户端数据地址
参考glBeginQuery\glBeginConditionRender
glGetRenderbufferParameteriv 3.0
获取Renderbuffer相关信息
GLenum target, : GL_RENDERBUFFER
GLenum pname,
GL_RENDERBUFFER_WIDTH, GL_RENDERBUFFER_HEIGHT, 宽高
GL_RENDERBUFFER_INTERNAL_FORMAT 格式
GL_RENDERBUFFER_SAMPLES 采样数
GL_RENDERBUFFER_RED/GREEN/BLUE/ALPHA/DEPTH/STENCIL_SIZE 各成分大小
GLint *params
参考glBindRenderbuffer、glRenderbufferStorage
glGetSamplerParameteri/fv 3.0
获取采样器参数
GLuint sampler,
GLenum pname,:
GL_TEXTURE_MAG_FILTER, :GL_NEAREST/GL_LINEAR 默认GL_LINEAR.
GL_TEXTURE_MIN_FILTER, :GL_NEAREST,GL_LINEAR ,GL_NEAREST/ LINEAR._MIPMAP_NEAREST/ LINEAR., 默认GL_NEAREST_MIPMAP_LINEAR
GL_TEXTURE_MIN_LOD, 默认-1000
GL_TEXTURE_MAX_LOD, 默认1000
GL_TEXTURE_LOD_BIAS, 默认0
GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T, GL_TEXTURE_WRAP_R, :
GL_REPEAT, GL_MIRRORED_REPEAT, GL_CLAMP_TO_EDGE/BOARDER, or GL_MIRROR_CLAMP_TO_EDGE(4.4).默认GL_REPEAT
GL_TEXTURE_BORDER_COLOR, 默认(0, 0, 0, 0).
GL_TEXTURE_COMPARE_MODE,:
GL_COMPARE_REF_TO_TEXTURE , 用于比较深度纹理纹理采样,当纹理坐标r<=采样值时返回1,其它返回0, ,<=为默认的compare func
默认GL_NONE,用于普通纹读取纹理采样值
GL_TEXTURE_COMPARE_FUNC默认GL_LEQUAL
GLint * params
glGetShaderiv 2.0
获取shader基本信息
GLuint shader,
GLenum pname,
GL_SHADER_TYPE, :类型 GL_VERTEX/ GEOMETRY/FRAGMENT_SHADER
GL_DELETE_STATUS, 是否标记为删除
GL_COMPILE_STATUS, 编译状态
GL_INFO_LOG_LENGTH, 日志信息长度, 获取信息使用glGetShaderInfoLog
GL_SHADER_SOURCE_LENGTH. 代码长度, 获取代码使用glGetShaderSource
GLint *params
glGetShaderInfoLog 2.0
获取shader编译日志信息
GLuint shader,
GLsizei maxLength,
GLsizei *length,
GLchar *infoLog
glGetShaderPrecisionFormat 4.1
获取顶点、片段程序精度
GLenum shaderType, :GL_VERTEX_SHADER or GL_FRAGMENT_SHADER
GLenum precisionType, :GL_LOW_FLOAT, GL_MEDIUM_FLOAT GL_HIGH_FLOAT, GL_LOW_INT, GL_MEDIUM_INT, or GL_HIGH_INT
GLint *range, 两个整数range[0] = floor(log2(|min|)) and range[1] = floor(log2(|max|))
GLint *precision floor(-log2(eps)). Eps为最小的大于1的数-1,即最小的大于1的数为1+eps
glGetShaderSource 2.0
获取shader代码
GLuint shader,
GLsizei bufSize,
GLsizei *length,
GLchar *source
glGetString 2.0
获取显卡、驱动相关信息
GLenum name:
GL_VENDOR, GL_RENDERER,
GL_VERSION(不同于glGet查询的当前上下文版本),
GL_SHADING_LANGUAGE_VERSION
glGetSubroutineIndex 4.0
根据名称查询子例程索引
GLuint program,
GLenum shadertype, : GL_VERTEX_SHADER, GL_TESS_CONTROL/EVALUATION_SHADER, GL_GEOMETRY_SHADER or GL_FRAGMENT_SHADER
const GLchar *name
glGetSubroutineUniformLocation 4.0
根据名称获取子例程位置
GLuint program,
GLenum shadertype, : GL_VERTEX_SHADER, GL_TESS_CONTROL/EVALUATION_SHADER, GL_GEOMETRY_SHADER or GL_FRAGMENT_SHADER
const GLchar *name
参考glUniformSubroutinesuiv
glGetSynciv 3.2
获取同步对象信息
GLsync sync,
GLenum pname,信息类型:
GL_OBJECT_TYPE 类型,只能为GL_SYNC_FENCE
GL_SYNC_STATUS 状态,GL_SIGNALED or GL_UNSIGNALED
GL_SYNC_CONDITION 同步条件,只能为GL_SYNC_GPU_COMMANDS_COMPLETE
GL_SYNC_FLAGS 同步标记,尚未使用
GLsizei bufSize,
GLsizei *length,
GLint *values
glGetTexImage 2.0
获取纹理图数据
GLenum target, GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D, GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_ARRAY….
GLint level,
GLenum format,: GL_STENCIL_INDEX, GL_DEPTH_COMPONENT, GL_DEPTH_STENCIL, GL_RED, GL_GREEN, GL_BLUE, GL_RG, GL_RGB, GL_RGBA, GL_BGR,
GL_BGRA, GL_RED_INTEGER, GL_GREEN_INTEGER, GL_BLUE_INTEGER, GL_RG_INTEGER, GL_RGB_INTEGER, GL_RGBA_INTEGER,
GL_BGR_INTEGER, GL_BGRA_INTEGER
GLenum type, : GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, GL_HALF_FLOAT, GL_FLOAT,
GL_UNSIGNED_BYTE_3_3_2, GL_UNSIGNED_BYTE_2_3_3_REV, GL_UNSIGNED_SHORT_5_6_5, GL_UNSIGNED_SHORT_5_6_5_REV,
GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_4_4_4_4_REV, GL_UNSIGNED_SHORT_5_5_5_1,
GL_UNSIGNED_SHORT_1_5_5_5_REV, GL_UNSIGNED_INT_8_8_8_8, GL_UNSIGNED_INT_8_8_8_8_REV, GL_UNSIGNED_INT_10_10_10_2,
GL_UNSIGNED_INT_2_10_10_10_REV, GL_UNSIGNED_INT_24_8, GL_UNSIGNED_INT_10F_11F_11F_REV, GL_UNSIGNED_INT_5_9_9_9_REV,
and GL_FLOAT_32_UNSIGNED_INT_24_8_REV
GLvoid * pixels 如果GL_PIXEL_PACK_BUFFER不为0,则为对应buffer偏移量
?将四成分纹理数据提取到同样大小的rgba缓冲区时,不会产生像素传输?
双成分的纹理数据提取到rgba缓冲区时,将填充RA,GB为0
glGetTextureSubImage 4.5
获取纹理区域数据,不能用于缓冲区或多重采样纹理
GLuint texture,
GLint level,
GLint xoffset,
GLint yoffset,
GLint zoffset,
GLsizei width,
GLsizei height,
GLsizei depth,
GLenum format,
GLenum type,
GLsizei bufSize,
void *pixels
其它与glGetTexImage类似
glGetTexLevelParameteri/fv 2.0
获取纹理层信息(纹理数据相关)
GLenum target, , GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D, GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_ARRAY….
GLint level,
GLenum pname, :
GL_TEXTURE_WIDTH, GL_TEXTURE_HEIGHT, GL_TEXTURE_DEPTH, 纹理大小
GL_TEXTURE_INTERNAL_FORMAT,
GL_TEXTURE_RED/GREEN/BLUE/ALPHA/DEPTH_TYPE 各成分类型:GL_NONE, GL_SIGNED_NORMALIZED, GL_UNSIGNED_NORMALIZED, GL_FLOAT,
GL_INT,
GL_TEXTURE_RED/GREEN/BLUE/ALPHA/DEPTH_SIZE 各成分大小
GL_TEXTURE_COMPRESSED, 是否压缩
GL_TEXTURE_COMPRESSED_IMAGE_SIZE, 大小
GL_TEXTURE_BUFFER_OFFSET、GL_TEXTURE_BUFFER_SIZE 对应buffer区域大小、偏移,参考glTexBufferRange 4.3
GLfloat * params
glGetTexParameteri/fv 2.0
获取纹理信息(纹理采样相关)
GLenum target, : GL_TEXTURE_1D, GL_TEXTURE_1D_ARRAY, GL_TEXTURE_2D, GL_TEXTURE_2D_ARRAY, GL_TEXTURE_2D_MULTISAMPLE,
GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_3D, GL_TEXTURE_CUBE_MAP, GL_TEXTURE_RECTANGLE, and GL_TEXTURE_CUBE_MAP_ARRAY
GLenum pname,: GL_DEPTH_STENCIL_TEXTURE_MODE, GL_TEXTURE_BASE_LEVEL,
GL_TEXTURE_BORDER_COLOR, GL_TEXTURE_COMPARE_MODE, GL_TEXTURE_COMPARE_FUNC, GL_TEXTURE_IMMUTABLE_LEVELS, GL_TEXTURE_LOD_BIAS, GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MAX_LEVEL, GL_TEXTURE_MAX_LOD, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MIN_LOD, GL_TEXTURE_SWIZZLE_R, GL_TEXTURE_SWIZZLE_G, GL_TEXTURE_SWIZZLE_B, GL_TEXTURE_SWIZZLE_A, GL_TEXTURE_SWIZZLE_RGBA GL_TEXTURE_VIEW_MIN_LAYER, GL_TEXTURE_VIEW_MIN_LEVEL, GL_TEXTURE_VIEW_NUM_LAYERS, GL_TEXTURE_VIEW_NUM_LEVELS, GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T, and GL_TEXTURE_WRAP_R
参数:,GL_TEXTURE_TARGET, GL_TEXTURE_IMMUTABLE_FORMAT,,GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 不是通过glTexParameter设置
GLint * params
参考glT exParameter
glGetTransformFeedbackiv/i_v/i64_v 4.5
获取变换反馈信息:
GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 当前绑定的变换反馈
GL_TRANSFORM_FEEDBACK_PAUSED 是否暂定
GL_TRANSFORM_FEEDBACK_ACTIVE 是否正在执行
GL_TRANSFORM_FEEDBACK_BUFFER_START/SIZE 绑定的缓冲区起始、大小
glGetTransformFeedbackVarying 3.0
根据索引查询变换反馈的变量名称、类型、大小
GLuintprogram,
GLuint index,
GLsizei bufSize,
GLsizei *length, 名称长度
GLsizei *size, 大小(type为单位)
GLenum *type, 类型
char *name 名称
参考glTransformFeedbackVaryings
glGetUniformi/fv 2.0
获取Uniform变量值
GLuint program,
GLint location,
GLfloat *params
数组、结构成员需要逐个获取
glGetUniformBlockIndex 3.1
返回Uniform块对应的索引
GLuint program,
const GLchar *uniformBlockName
参考glUniformBlockBinding
glGetUniformIndices 3.1
根据名称一次获取多个uniform索引
GLuint program,
GLsizei uniformCount,
const GLchar **uniformNames,
GLuint *uniformIndices
不存在的名称对应索引为GL_INVALID_INDEX
根据索引可以使用glGetActiveUniform获取uniform变量相关信息:名称、类型、大小
索引(index)和位置(location)的区别: 索引用于直接获取变量本身信息,对应的是顺序号,location用于设置获取变量对应数据,对应的是数据地址
glGetUniformLocation 2.0
根据名称获取uniform变量地址
GLuint program,
const GLchar *name
数组或者结构可以通过[index]和.fieldName获取
glGetUniformSubroutineuiv 4.0
根据location获取当前程序suroutine uniform值
GLenum shadertype, :GL_VERTEX_SHADER, GL_TESS_CONTROL/EVALUATION_SHADER, GL_GEOMETRY_SHADER or GL_FRAGMENT_SHADER
GLint location,
GLuint *values
glGetVertexArrayIndexediv/64iv 4.5
根据索引获取VAO属性信息, 与glGetVertexAttrib类似
GLuint vaobj,
GLuint index, 属性索引,参考glVertexAttribPointer
GLenum pname,
GL_VERTEX_ATTRIB_ARRAY_ENABLED 属性是否启用
GL_VERTEX_ATTRIB_ARRAY_SIZE 大小1/2/3/4(成分个数)
GL_VERTEX_ATTRIB_ARRAY_TYPE 类型GL_BYTE, GL_DOUBLE, GL_FIXED, GL_FLOAT, GL_HALF_FLOAT, GL_INT, GL_INT_2_10_10_10_REV, GL_SHORT,
GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT, GL_UNSIGNED_INT, GL_UNSIGNED_INT_2_10_10_10_REV, and GL_UNSIGNED_INT_10F_11F_11F_REV
GL_VERTEX_ATTRIB_ARRAY_STRIDE 相邻元素偏差字节数,0表示连续存放
GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 是否需要normailized
GL_VERTEX_ATTRIB_ARRAY_INTEGER 是否是整数类型
GL_VERTEX_ATTRIB_ARRAY_LONG 是否是double类型
GL_VERTEX_ATTRIB_ARRAY_DIVISOR 实例渲染divisor, 参考glVertexAttribDivisor
GL_VERTEX_ATTRIB_RELATIVE_OFFSET 绑定缓冲区时偏移量
GLint *param
glGetVertexArrayiv 4.5
获取VAO绑定的索引缓冲区
时GLuint vaobj,
GLenum pname, : GL_ELEMENT_ARRAY_BUFFER_BINDING
GLint *param
glGetVertexAttribi/fv 2.0
获取顶点属性信息,与glGetVertexIndexediv类似
多了GL_CURRENT_VERTEX_ATTRIB: params returns four values that represent the current value for the generic vertex attribute specified by index. Generic vertex attribute 0 is unique in that it has no current state, so an error will be generated if index is 0. The initial value for all other generic vertex attributes is (0,0,0,1).
glGetVertexAttribPointerv 2.0
获取顶点属性数据指针,当GL_ARRAY_BUFFER不为0时,为对应buffer偏移量
GLuint index,
GLenum pname, GL_VERTEX_ATTRIB_ARRAY_POINTER
GLvoid **pointer