RenderBuffer

A renderbuffer is a data storage object containing a single image of
    a renderable internal format.(参考http://www.opengl.org/registry/specs/EXT/framebuffer_object.txt下4.4.2.1)

 

渲染缓冲区是OpenGL管理的有效内存,其中包含了格式化的图像数据。

绑定渲染缓冲区后,并没有分配存储空间来存储图像数据。需要分配存储空间并指定其图像格式,然后才可以把渲染缓冲区附加到一个帧缓冲区并向其中渲染。

 

GLvoid glGenRenderbuffersOES (GLsizei n, GLuint* renderbuffers)

不保证renderbuffers的名字都是连续的数字,但能保证所有的renderbuffer都未使用

GLvoid glBindRenderbufferOES (GLenum target, GLuint renderbuffer);

 

renderBuffer 用于离屏渲染,即将场景渲染到renderBuffer object上。RBO是一个数据存储区,含有一副图像和内部渲染格式,用于存储opengl没有纹理格式的逻辑缓冲区,如模板和深度缓冲区。

void glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)

Renderbuffers cannot be bound to shaders or otherwise rendered with; they can only be attached to FBOs.

 

framebuffer是什么?

framebuffer是帧缓冲对象,它是一个容器,但是自身不能用于渲染,需要与一些可渲染的缓冲区绑定在一起,像纹理或者渲染缓冲区。

在OpenGL渲染管线中,几何数据和纹理经过一系列的测试最终以2d像素图渲染到屏幕上,最终的渲染目的地就叫做帧缓冲区。它是由一些OpenGL操作的2d数组和存储空间组成。这个缓冲区完全的由窗口系统创建和管理,这个默认的缓冲区就叫做“窗口系统提供的”缓冲区。

framebuffer有什么优点?

允许我们把渲染从窗口的帧缓冲区转移到离屏帧缓冲区,即离屏渲染。

1.FBO并不受窗口大小的限制。
2.纹理可以连接到FBO,允许直接渲染到纹理,不需要显示glCopyTexImage。
3.FBO可以包含许多颜色缓冲区,可以同时从一个片段着色器写入。

 

posted @ 2013-05-10 18:09  Kalou  阅读(2898)  评论(0编辑  收藏  举报