[OpenGL 超级宝典][笔记] 8.1 纹理缓冲区(TBO)
2017-05-31 22:29
357 查看
纹理缓冲区(TBO)
当一个缓冲区对象绑定GL_TEXTURE_BUFFER绑定点时,我们称之为纹理缓冲区(TBO).作用:
能够直接直译来自其它渲染结果如变换反馈,像素读取操作,顶点数据,提高性能。宽松的大小限制,比1D纹理大64倍。
用来对片段着色器和顶点着色器顶点数据访问。
使用方法:
Step1: 创建并绑定到GL_TEXTURE_BUFFER上。glBindBuffer(GL_TEXTURE_BUFFER, texBO[0]); glBufferData(GL_TEXTURE_BUFFER, sizeof(float)*count, fileData, GL_STATIC_DRAW);
Step2: TBO绑定到纹理单元上
glActiveTexture(GL_TEXTURE); glBindTexture(GL_TEXTURE_BUFFER, texBOTexture); glTexBuffer(GL_TEXTURE_BUFFER, GL_R32F, texBO[0]);
step3: Shader中使用新的采样器SampleBuffer采样texelFetch.
uniform samplerBuffer lumCurveSample; void main(void) { ... int offset = int(vColor.r * (1024-1)); lumFactor.r = texelFetch(lumCurveSampler, offset).r; }
采样时,传统的Texture1D的坐标域是(0,1);但是,TBO中texelFetch的坐标域是从0到缓冲区大小值的整数索引。注意,需要减去1;
总结:
TBO相比传统的纹理方式,可以大大的提高性能。相关文章推荐
- [openGL超级宝典][笔记][8.1缓冲区]
- 【转】OpenGL超级宝典笔记——纹理映射Mipmap
- [OpenGL 超级宝典][笔记] 8.1 PBO介绍与用法
- OpenGL超级宝典笔记三 - 基础纹理1
- 【转载】OpenGL超级宝典笔记——GLSL语言基础
- [OpenGL 超级宝典][笔记] 8.2 帧缓冲区(FBO)
- opengl super bible(超级宝典)第五版阅读笔记
- OpenGL超级宝典笔记----框架搭建
- OpenGL(3)超级宝典笔记——GLSL语言基础
- OpenGL超级宝典笔记----渲染管线
- [转载]OpenGL超级宝典笔记——GLSL语言基础
- OpenGL 3D 超级宝典学习笔记
- OpenGL超级宝典笔记二 - 基础变换
- OpenGL超级宝典笔记6
- OpenGL超级宝典笔记5
- OpenGL超级宝典-第4版 chapter4-transformgl.cpp运行方法
- 读书笔记——OpenGL超级宝典
- OPENGL超级宝典-6.6
- 在linux下将OpenGL超级宝典里的例子用eclipse打开
- 问题解决——OpenGL超级宝典 第四章 4.5.2 关于freeglut.lib问题的解决过程