索引
D
glDebugMessageCallback
4.3+ 设置opengl调试信息回调
DEBUGPROC callback,
void * userParam 用户自定义参数
DEBUGPROC定义:
typedef void (APIENTRY *DEBUGPROC)(
GLenum source,
GLenum type,
GLuint id,
GLenum severity,
GLsizei length,
const GLchar *message,
void *userParam);
glDebugMessageControl
4.3+ 控制是否报告指定类型信息
GLenum source, :GL_DONT_CARE
GL_DEBUG_SOURCE_API, GL_DEBUG_SOURCE_WINDOW_SYSTEM_, GL_DEBUG_SOURCE_SHADER_COMPILER, GL_DEBUG_SOURCE_THIRD_PARTY, GL_DEBUG_SOURCE_APPLICATION, GL_DEBUG_SOURCE_OTHER to
GLenum type, GL_DEBUG_TYPE_ERROR, GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR,
GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR, GL_DEBUG_TYPE_PORTABILITY, GL_DEBUG_TYPE_PERFORMANCE, GL_DEBUG_TYPE_MARKER, GL_DEBUG_TYPE_PUSH_GROUP, GL_DEBUG_TYPE_POP_GROUP, or GL_DEBUG_TYPE_OTHER
GLenum severity, GL_DONT_CARE GL_DEBUG_SEVERITY_LOW,
GL_DEBUG_SEVERITY_MEDIUM, or GL_DEBUG_SEVERITY_HIGH
GLsizei count,
const GLuint *ids,
GLboolean enabled
设置为GL_DONT_CARE 表示捕捉所有类型
glDebugMessageInsert
4.3+ 插入自定义信息
glDelete__
Program
Shader
Sync
Buffers
FrameBuffers
ProgramPipelines
Queries
Renderbuffers
Samplers
Textures
TransformFeedbacks
VertexArrays
glDepthFunc
2.0+ 设置深度比较函数,默认GL_LESS, 需使用glEnable(GL_DEPTH_TEST)启用深度测试
GLenum func: GL_NEVER, GL_LESS, GL_EQUAL, GL_LEQUAL, GL_GREATER, GL_NOTEQUAL, GL_GEQUAL, and GL_ALWAYS
深度写通过glDepthMask控制
glDepthMask
2.0+ 设置是否深度写
GLboolean flag :默认GL_TURE, 启用深度写,读取通过 glGet( GL_DEPTH_WRITEMASK)
glDepthRange
2.0+ 设置深度范围映射,默认(0,1),用于将gl(-1,1)映射到windows(0,1)
GLdouble nearVal,
GLdouble farVal
nearVal可以小于farVal,都必须位于[0,1]区间。此函数可用于调整深度值。
glDepthRangeArrayv
4.1+ 批量设置多个视口DepthRange
glDepthRangeIndexed
4.1 设置指定视口DepthRange
glDetachShader
2.0 分离shader
GLuint program,
GLuint shader
glDisable
参考glEnable
glDisableVertexAttribArray
禁用顶点属性数组
glDisableVertexArrayAttrib
4.5+ 直接禁用指定vao的顶点属性数组
glDispatchCompute
4.3+ 执行计算程序
GLuint num_groups_x,
GLuint num_groups_y,
GLuint num_groups_z
glDispatchComputeIndirect
4.3+ 从当前GL_DISPATCH_INDIRECT_BUFFER缓冲区读取启动数据num_groups_x/y/z
GLintptr offset
glDrawArrays
2.0+ 非索引方式绘制图元
GLenum mode,:GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP,
L_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_LINE_STRIP_ADJACENCY, GL_LINES_ADJACENCY,GGL_TRIANGLE_STRIP_ADJACENCY, GL_TRIANGLES_ADJACENCY GL_PATCHES
GLint first, 起始点索引
GLsizei count 点个数
_ADJACENCY 类型需要3.2+
glDrawArraysIndirect
4.0+ 相当于glDrayArraysInstancedBaseInstance,区别在于参数由indirect指向的地址指定
GLenum mode,
const void *indirect
如果GL_DRAW_INDIRECT_BUFFER绑定了缓冲区,则从缓存区而不是内存读取参数,此时indirect为偏移量(机器字节数)
glDrawArraysInstanced
3.1+ 实例绘制,和glDrawArrays相比增加了参数GLsizei instances,表示绘制实例个数
GLenum mode,
GLint first,
GLsizei count,
GLsizei instances
顶点程序可通过gl_InstanceID获取当前实例编号,通过glVertexAttribDivisor设置属性为实例更新
glDrawArraysInstancedBaseInstance
4.1+ 和glDrawArraysInstanced比增加了读取属性偏移值。内置的gl_InstanceID不受影响
GLenum mode,
GLint first,
GLsizei count,
GLsizei primcount,
GLuint baseinstance 实例化的顶点属性偏移量attrib=attribs[baseinstance +gl_InstanceID]
glDrawBuffer
2.0+ 设置绘制颜色缓冲区
GLenum buf:GL_FRONT GL_BACK GL_COLOR_ATTACHMENT[n] GL_RIGHT …
glNamedFramebufferDrawBuffer 直接设置指定帧缓冲区对应的颜色缓冲区
glDrawBuffers 2.0
设置多个绘制颜色缓冲区
GLsizei n,
const GLenum *bufs :GL_FRONT_LEFT、GL_FRONT_RIGHT、GL_BACK_LEFT、GL_BACK_RIGHT 、GL_COLOR_ATTACHMENT n
不可以使用GL_FRONT, GL_BACK, GL_LEFT, GL_RIGHT,因为可能包含多个缓冲区
glDrawElements
2.0+ 索引方式绘制图元
GLenum mode, 图元类型,如:GL_TRIANGLES
GLsizei count, 索引个数
GLenum type, 索引类型GL_UNSIGNED_BYTE/SHORT/INT
const GLvoid * indices 索引数据地址,如果启用了GL_ELEMENT_ARRAY_BUFFER则为对应的偏移量(机器字节数)
glDrawElementsBaseVertex
3.2+ 与glDrawElements类似,区别在于取出的索引值需要再加上basevertex作为最终索引
GLenum mode,
GLsizei count,
GLenum type,
GLvoid *indices,
GLint basevertex 索引基值
glDrawElementsIndirect
4.0+ 间接绘制,相当于glDrayElementsInstancedBaseInstance,区别在于参数由indirect指向的地址指定
GLenum mode,
GLenum type,
const void *indirect 数据地址
如果GL_DRAW_INDIRECT_BUFFER绑定了缓冲区,则从缓存区而不是内存读取参数,此时indirect为偏移量(机器字节数)
glDrawElementsInstanced
3.1+ 实例索引绘制, 相比glDrawElements增加实例数参数primcount
GLenum mode,
GLsizei count,
GLenum type,
const void * indices,
GLsizei primcount 实例个数
glDrawElementsInstancedBaseInstance
4.2+偏移实例绘制,类似于glDrawArraysInstancedBaseInstance
GLenum mode,
GLsizei count,
GLenum type,
const void * indices,
GLsizei primcount,
GLuitn baseinstance 实例属性偏移
glDrawElementsInstancedBaseVertex
3.2+索引偏移实例绘制, 在glDrawElementsBaseVertex基础上加了实例绘制
GLenum mode,
GLsizei count,
GLenum type,
GLvoid *indices,
GLsizei primcount, 实例个数
GLint basevertex 索引值基值
glDrawElementsInstancedBaseVertexBaseInstance
4.2+ 索引、实例偏移实例绘制,对索引和实例都做了基值调整
GLenum mode,
GLsizei count,
GLenum type,
GLvoid *indices,
GLsizei primcount, 实例个数
GLint basevertex, 索引基值
GLuint baseinstance 实例基值
glDrawRangeElements 2.0
等同于glDrawElements, 区别加了start end提示索引范围,可能有利于优化速度
GLenum mode,
GLuint start, 最小的索引值
GLuint end, 最大的索引值 [start, end]限定了所使用的顶点属性范围,如果顶点的索引值不在此范围,结果未定义
GLsizei count,
GLenum type,
const GLvoid * indices
glDrawRangeElementsBaseVertex?
3.2+ 没用,参考glDrawElementsBaseVertex
glDrawTransformFeedback
4.0+ 利用指定的TransformFeedback对象获取顶点个数并进行绘制
GLenum mode, 图元类型
GLuint id transformFeedback对象id
相当于glDrawArrays(mode, 0, transformFeedback. vertexstream0. Count);
顶点个数从transformFeedback对象顶点流0中获取,该对象需要进过完整的流程:
glBindTranformFeedback(GL_TRANSFORM_FEEDBACK, id)
…
glBeginTransformFeedback( GLenum primitiveMode)
….
glEndTransformFeedback()
glDrawTransformFeedbackInstanced
4.2+ 实例绘制,参考glDrawTransformFeedback
glDrawTransformFeedbackStream
4.0+参考glDrawTransformFeedback,增加指定流参数,不再是默认的0
GLenum mode,
GLuint id,
GLuint stream
glDrawTransformFeedbackStreamInstanced
4.0+参考glDrawTransformFeedbackStream,增加了实例绘制参数