索引
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