Opengl4.5 中文手册—G

时间:2023-11-11 19:46:44

索引

A      B    C      D     E     F     G

H      I     J      K     L     M     N

O      P    Q      R     S     T

U      V    W      X     Y     Z

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