Opengl4.5 中文手册—D

Posted wiki3D

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Opengl4.5 中文手册—D相关的知识,希望对你有一定的参考价值。

索引

      B     C      D     E     F     G  

      I       L     M     N

      P     Q      R     S     T   

U       V     W 

 

 

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,增加了实例绘制参数

以上是关于Opengl4.5 中文手册—D的主要内容,如果未能解决你的问题,请参考以下文章

Opengl4.5 中文手册—E

Opengl4.5 中文手册—F

Opengl4.5 中文手册—B

Opengl4.5 中文手册—C

Opengl4.5 中文手册—U

Opengl4.5 中文手册—V