Opengl4.5 中文手册—B
索引
B
glBeginConditionalRender 3.0
开始条件渲染
GLuint queryid
GLenu mode: GL_QUERY_WAIT|GL_QUERY_NOWAIT|
GL_QUERY_BY_REGION_WAIT|GL_QUERY_REGION_NOWAIT
根据遮挡查询结果进行绘制,_WAIT会等待查询执行完毕,再根据结果判断;_NOWAIT版本在Query未执行完时会直接绘制
glBeginQuery 2.0
开启遮挡查询
GLenum target:
GL_SAMPLES_PASSED, 通过的采样个数
GL_ANY_SAMPLES_PASSED, 是否存在通过的采样 3.3+
GL_ANY_SAMPLES_PASSED_CONSERVATIVE, 非精确的结果(保守),速度可能快 4.3+
GL_PRIMITIVES_GENERATED, vertex shader或者geometry shader emit顶点数
GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN, 查询生成到反馈查询缓冲区中的顶点数
GL_TIME_ELAPSED
GLuint queryid
glEndQuery(GLenum target ):与begin相同
结束查询
可以使用glGetQuery、glGetQueryObject获取查询结果
glBeginQueryIndexed 4.0
4启用索引查询,用于geometryshader
GLenum target
GLuint index 和BeginQuery区别在于使用geometryshader并在在target为GL_PRIMITIVES_GENERATED\ GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN时,可指定对应的stream索引
GLuint queryid
glEndQueryIndexed结束查询
glBeginTransformFeedback
3.0+ 开启反馈查询
GLenum mode: GL_POINTS\GL_LINES\GL_TRIANGLES
用于将vertex或者geometry shader结果输出到通过glBindBufferBase、glBindBufferRange绑定的GL_TRANSFORM_FEEDBACK_BUFFER缓冲区,不是通过glBindBuffer绑定(无索引参数,只能绑定到非数组类型的目标缓冲区:GL_ATOMIC_COUNTER_BUFFER, GL_TRANSFORM_FEEDBACK_BUFFER, GL_UNIFORM_BUFFER or GL_SHADER_STORAGE_BUFFER). P458
记录的顶点程序输出可在程序链接前通过glTransformFeedbackVaryings设置
glBindAttribLocation 2.0
设置顶点属性索引,一般在shader中用layout(location=index) 设置,设置的索引在linkprogram之后生效。
可以将多个名称绑定到同一索引,实现别名
GLuint program,
GLuint index,
const GLchar *name
绑定片段程序输出使用glBindFragDataLocation
glBindBuffer 2.0
关联buffer
GLenum target:
GL_ARRAY_BUFFER 顶点属性,用于glVertexAttribPointer
GL_ELEMENT_ARRAY_BUFFER 顶点索引,用于glDrawElements等索引绘制方法
GL_COPY_READ_BUFFER Buffer copy source
GL_COPY_WRITE_BUFFER Buffer copy destination
GL_PIXEL_PACK_BUFFER 用于从纹理或帧缓冲区对象中读取像素数据 glGetCompressedTexImage, glGetTexImage, and glReadPixels.
GL_PIXEL_UNPACK_BUFFER 作为生成纹理数据源,用于glTexImage2D, glTexImage3D, glTexSubImage1D, glTexSubImage2D等
GL_TEXTURE_BUFFER Texture data buffer
GL_QUERY_BUFFER 用于存储查询结果glGetQuery
GL_DISPATCH_INDIRECT_BUFFER 用于glDispatchComputeIndirect
GL_DRAW_INDIRECT_BUFFER 用于glDrawArraysIndirect and glDrawElementsIndirect
以下四个类型含多个绑定点,需要使用glBindBufferBase 或glBindBufferRange绑定
GL_ATOMIC_COUNTER_BUFFER Atomic counter storage
GL_SHADER_STORAGE_BUFFER Read-write storage for shaders
GL_TRANSFORM_FEEDBACK_BUFFER Transform feedback buffer
GL_UNIFORM_BUFFER
GLuint bufferID
glBindBufferBase
3.0+ 绑定索引的数组类型的缓冲区,也可绑定非索引类型缓冲区
索引缓冲区包括:GL_ATOMIC_COUNTER_BUFFER, GL_TRANSFORM_FEEDBACK_BUFFER
, GL_UNIFORM_BUFFER or GL_SHADER_STORAGE_BUFFER
GLenum target,
GLuint index, 相比glBindBuffer增加了此参数,指定对应绑定点索引,
GLuint buffer
glBindBufferRange
3.0+绑定索引的缓冲区中可用数据范围,也可用于绑定非索引类型缓冲区
索引缓冲区包括:GL_ATOMIC_COUNTER_BUFFER, GL_TRANSFORM_FEEDBACK_BUFFER
, GL_UNIFORM_BUFFER or GL_SHADER_STORAGE_BUFFER
相比glBindBufferBase增加了offset和size
GLenum target,
GLuint index,
GLuint buffer,
GLintptr offset,
GLsizeiptr size
glBindFramebuffer
关联帧缓冲区
3.0+
GLenum target, :GL_DRAW_FRAMEBUFFER 渲染、GL_READ_FRAMEBUFFER读取、GL_FRAMEBUFFER 渲染和读取
GLuint framebuffer
关联到GL_DRAW_FRAMEBUFFER的Framebuffer的可通过glFramebufferRenderbuffer挂接渲染缓冲区、以及通过glFramebufferTexture2D渲染到纹理。
glBindFragDataLocation 3.0
设置片段程序输出对应的颜色缓冲区索引
GLuint program,
GLuint colorNumber, [0, GL_MAX_DRAW_BUFFERS)
const char * name 变量名称
如果片段程序使用layout (location = colorNumber)指定了索引,则此方法调用无效
不可以将多个变量输出到同一索引
主要用于多渲染目标绘制,参考glDrawBuffers
glBindFragDataLocationIndexed 3.2
同glBindFragDataLocation, 增加了index,分别为0/1表示对应颜色混合等式的第一个或第二个输入项
GLuint program,
GLuint colorNumber,
GLuint index,
const char *name
glBindImageTexture
4.2+ 绑定纹理到image unit用于后续的shader读写
GLuint unit, 绑定到的image unit索引
GLuint texture,
GLint level, 使用的纹理level
GLboolean layered,使用纹理数组或者立方体纹理时,是否按层堆放。true 使用所有, false 仅使用layer指定的层
GLint layer, layerder=false时指定使用的层
GLenum access, GL_READ_ONLY, GL_WRITE_ONLY, or GL_READ_WRITE 指定读写权限
GLenum format 数据输出格式,应与纹理的innerformat同大小并属于同一类。
glBindImageTextures
4.4+ 批量绑定纹理到image unit
GLuint first, 起始iamge unit索引
GLsizei count,
const GLuint *textures
采用layered方式绑定level 0,格式与纹理格式相同
glBindProgramPipeline
4.1+ 绑定管线对象到当前上下文
GLuint pipeline
如果glUseProgram 设置了当前程序,则使用glUseProgram的设置,glUseProgram优先级较高。
glBindRenderbuffer
3.0+ 绑定渲染缓冲区
GLenum target, GL_RENDERBUFFER 仅此一个绑定点,设计多余
GLuint renderbuffer
绑定后可通过glRenderbufferStorage初始化格式和大小,并关联到Framebuffer用于后续渲染
glBindSampler
3.3+ 将采样器关联到纹理单元
GLuint unit
GLuint sampler
采样器设置优先于纹理的单元的纹理状态设置,未设置采样器才会采用纹理状态设置
一个采样器可用于多个纹理单元
glBindSamplers
4.4+ 批量设置多个采样器
GLuint first, 起始纹理单元索引
GLsizei count,
const GLuint *samplers
glBindTexture
2.0+ 绑定纹理
GLenum target: GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D, GL_TEXTURE_1D_ARRAY, GL_TEXTURE_2D_ARRAY, GL_TEXTURE_RECTANGLE, GL_TEXTURE_CUBE_MAP, GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_BUFFER, GL_TEXTURE_2D_MULTISAMPLE or GL_TEXTURE_2D_MULTISAMPLE_ARRAY
GLuint texture
纹理默认仅当前渲染上下文可见。
glBindTextures
4.4+ 批量绑定纹理
GLuint first, 起始纹理单元
GLsizei count,
const GLuint *textures
glBindTextureUnit
4.5+ 蒋纹理直接绑定到纹理单元
GLuint unit,
GLuint texture
相当于glActiveTexture +glBindTexture, 可配合glBindSampler
glBindTransformFeedback
4.0+ 绑定变换反馈对象
GLenum target, GL_TRANSFORM_FEEDBACK
GLuint id
glBindVertexArray
3.0+ 绑定顶点数组对象VAO
GLuint arrayID
glBindVertexBuffer
4.3+ 绑定顶点buffer ,相当于glBindBuffer+glVertexAttribPointer,但简单多了,以前设计太累赘
GLuint bindingindex, 绑定索引
GLuint buffer,
GLintptr offset,
GLintptr stride
4.5+ glVertexArrayVertexBuffer 直接绑定到VAO
glBindVertexBuffers
4.4+ 批量绑定多个顶点buffer
GLuint firstIndex,
GLsizei count,
const GLuint *buffers,
const GLuintptr *offsets,
const GLsizei *strides
glBlendColor
2.0+ 设置混合颜色,用于glBlendFunc:: GL_CONSTANT_COLOR
GLfloat red,
GLfloat green,
GLfloat blue,
GLfloat alpha
glBlendEquation
2.0+ 设置源、目标混合方程式
GLenum mode GL_FUNC_ADD, GL_FUNC_SUBTRACT, GL_FUNC_REVERSE_SUBTRACT, GL_MIN, GL_MAX 加、减、目标-源,最小、最大
glBlendEquationi ( GLuint buf, GLenum mode) 4.0+ 依据索引设置指定drawbuffer
glBlendEquationSeparate
2.0+ 对rgb和alpha设置不同的方程式
GLenum modeRGB,
GLenum modeAlpha
glBlendFunc
2.0+ 设置源和目标混合因子
GLenum src, dst :
GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA. GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR, GL_CONSTANT_ALPHA, and GL_ONE_MINUS_CONSTANT_ALPHA
GL_CONSTANT_COLOR : 采用glBlendColor设定的值
GL_SRC_ALPHA_SATURATE :采用srcAlpha和1-dstAlpha中较小的一个
默认源为GL_ONE, 目标为 GL_ZERO。混合默认无效,启用需要使用glEnable(GL_BLEND)
常用的透明为:(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
glBlendFunc设置所有drawbuffer,设置单个drawbuffer使用glBlendFunci
glBlendFuncSeparate
与glBlendFunc类似,为rgb和alpha设置不同的混合因子
glBlitFramebuffer 3.0
3.0+ 帧缓冲区之间拷贝数据,比如帧缓冲区输出结果拷贝的窗口缓冲区显示
GLint srcX0,
GLint srcY0,
GLint srcX1,
GLint srcY1,
GLint dstX0,
GLint dstY0,
GLint dstX1,
GLint dstY1,
GLbitfield mask 颜色、深度、模板标记
GL_COLOR_BUFFER_BIT, GL_DEPTH_BUFFER_BIT GL_STENCIL_BUFFER_BIT
GLenum filter 过滤方式GL_NEAREST or GL_LINEAR, 深度或模板只能使用GL_NEAREST
将绑定到GL_READ_FRAMEBUFFER的FrameBuffer数据复制到GL_DRAW_FRAMEBUFFER绑定的帧缓冲区。可以为0,即窗口系统缓冲区。
拷贝范围为[srcx0, srcy0]-(srcx1,srcy1),即左下包含,右上不包含
glBlitNamedFramebuffer 4.5+ 根据framebufferID直接复制数据
glBufferData 2.0
初始化Buffer数据
GLenum target,
GLsizeiptr size, 大小
const GLvoid * data, 数据地址,可为NULL,后续可通过glBufferSubData, glMapBuffer
glReadPixels等方式生成数据
GLenum usage: GL_STREAM/STATIC/DYNAMIC_DRAW/READ/COPY
STATIC 一次创建,经常使用
DYMAMIC 多次创建,多次使用
STREAM 一次创建,几次使用
DRAW 写数据到GPU
READ 从GPU中读取数据
COPY GPU读写数据
glNamedBufferData 4.5+ 直接初始化buffer数据
GLuint buffer,
GLsizei size,
const void *data,
GLenum usage
glBufferStorage 4.4
初始化buffer数据存储,参数与glBufferData仅最后标记不同,相比glBufferData, 标志位多了COHERENT和PERSISTENT以便协调cpu gpu并发
GLenum target,
GLsizeiptr size,
const GLvoid * data,
GLbitfield flags:
GL_DYNAMIC_STORAGE_BIT 数据可通过glBufferSubData动态更新,否则cpu在初始化后不能再更改数据。对于gpu, 不论设不设置都可以通过glCopyBufferSubData and glClearBufferSubData修改其数据
GL_MAP_READ_BIT cpu可以通过map读取其数据
GL_MAP_WRITE_BIT cpu可以通过map更新数据
GL_MAP_PERSISTENT_BIT map期间gpu可以读写buffer(不需要等待)
GL_MAP_COHERENT_BIT 使用glMapBufferRange期间,保持cpu与gpu数据一致。即cpu写对gpu立即可见。Gpu写在调用glFinish或者glFenceSync(GL_SYNC_GPU_ COMMANDS_COMPLETE,0)后对cpu可见。如果不指定此标记,需要先调用glMemoryBarrier, 数据修改才对gpu可见;对于cpu需要调用glMemoryBarrier之后再调用glFenceSync或者glFinish,gpu对数据的修改才可见
GL_CLIENT_STORAGE_BIT 使用客户端内存存储(具体存储位置依据实现)
指定GL_MAP_COHERENT_BIT需要同时指定GL_MAP_PERSISTENT_BIT
glNamedBufferStorage 4.5+ 直接设置buffer数据存储
glBufferSubData
2.0+ 替换部分数据
GLenum target,
GLintptr offset,
GLsizeiptr size,
const GLvoid * data
替换全部数据使用glBufferSubData优于glBufferData,可避免重新分配内存。
可以考虑使用多个buffer,避免在更新时堵塞渲染管线
glNamedBufferSubData 4.5+ 直接更新buffer
Opengl4.5 中文手册—B的更多相关文章
- Opengl4.5 中文手册—A
因为opengl API 比较庞大,网络上还没有完整的.较新的opengl中文手册 这对很多人很不方便,所以整理了这一系列,用于帮助大家"快速浏览最新的opengl api" 为了 ...
- Opengl4.5 中文手册—G
索引 A B C D E F G H I J K L M N O P Q ...
- Opengl4.5 中文手册—C
索引 A B C D E F G H I J K L M N O P Q ...
- Opengl4.5 中文手册—D
索引 A B C D E F G H I J K L M N O P Q ...
- Opengl4.5 中文手册—E
索引 A B C D E F G H I J K L M N O P Q ...
- Opengl4.5 中文手册—F
索引 A B C D E F G H I J K L M N O P Q ...
- NVelocity介绍,NVelocity中文手册文档及实例下载
NVelocity是什么velocity英音:[vi'lɔsiti]美音:[və'lɑsətɪ]近在做一个项目,客户要求有网站模板功能,能够自主编辑网站的风格,因为这个系统是为政府部门做子站系统,举个 ...
- (转)Sqoop中文手册
Sqoop中文手册 1. 概述 本文档主要对SQOOP的使用进行了说明,参考内容主要来自于Cloudera SQOOP的官方文档.为了用中文更清楚明白地描述各参数的使用含义,本文档几乎所有参数 ...
- man中文手册配置
1.ubuntu环境man中文手册配置 1) 终端输入sudo apt-get install manpages-zh 2) 安装后修改配置文件sudo gedit /etc/manpath.co ...
随机推荐
- 一道风骚的DP
也是校赛学长出的一道题~想穿了很简单..但我还是听了学长讲才明白. 观察力有待提高. Problem D: YaoBIG's extra homeworkTime LimitMemory Limit1 ...
- 把elipse非maven的Struts2+Spring+Ibatis项目导入Idea中
1.按图示操作 2.选中自己要得到的项目 3.之后设定得到的项目放在哪里 项目得到之后,对项目点击右键Open Module Settings,点击Project,设置生成的编译文件存储路径 4.单击 ...
- Java-break,continue,return用法
当年的我也算是基础小王子,但是长时间的不用导致我与他们越来越陌生了,所以我要把他们记在我的本本上. 首先我们要明白,java中到底有多少个循环关键字? 答:没错,就是3个,他们分别是:for(初始值: ...
- Python 的经典入门书籍有哪些?
是不是很多人跟你说,学Python开发就该老老实实地找书来看,再配合死命敲代码?电脑有了,软件也有了,心也收回来了?万事俱备,唯独只欠书籍?没找到到合适的书籍?可以看看这些. 1.Python基础教程 ...
- C# 单例模式(Singleton Pattern)
(新手写博客,主要是对自己学习的归纳总结.会对很多小细节详解.) 单例模式的定义: 确保一个类只有一个实例,并提供一个全局访问点. 首先实例大家应该都明白就是类生成对象的过程简单的就是String s ...
- SSH2项目网上书店系统手把手教学_Struts2+Spring+Hibernate整合开发
一 序言 鉴于目前J2EE的火热程度,SSH2是每个学生毕业前都必须掌握的一门技术,所以在这里我就使用SSH2技术做一个小型项目,和大家一起学习. SSH2技术的基础概论就不再提了,直接说特点吧. 1 ...
- python利用urllib实现的爬取京东网站商品图片的爬虫
本例程使用urlib实现的,基于python2.7版本,采用beautifulsoup进行网页分析,没有第三方库的应该安装上之后才能运行,我用的IDE是pycharm,闲话少说,直接上代码! # -* ...
- Tinyhttpd 代码学习
前阵子,参加了实习生面试,被面试官各种虐,问我说有没有读过一些开源的代码.对于只会用框架的我来说真的是硬伤啊,在知乎大神的推荐下在EZLippi-浮生志找了一些源代码来阅读,于是从小型入手,找了Tin ...
- 建立maven工程pom.xml报错:web.xml is missing and <failOnMissingWebXml> is set to true
解决方式:如图添加web.xml文件即可
- PyCharm:2017.3版即将新增科学计算模式,预览版现在可以下载使用
编译:Lemon,原文作者:Ernst Haagsman 公众号:Python数据之道(ID:PyDataRoad) pycharm:2017.3版即将新增科学计算模式 在JetBrains将发布的新 ...