我对Framebuffer和Renderbuffer的概念感到困惑。我知道需要渲染它们,但是我想在使用之前先了解它们。
我知道需要一些位图缓冲区来存储临时绘图结果。后台缓冲区。在进行这些绘图时,需要在屏幕上看到另一个缓冲区。前缓冲区。翻转它们,然后再次绘制。我知道这个概念,但是很难将这些对象连接到这个概念。
它们的概念和区别是什么?
我对Framebuffer和Renderbuffer的概念感到困惑。我知道需要渲染它们,但是我想在使用之前先了解它们。
我知道需要一些位图缓冲区来存储临时绘图结果。后台缓冲区。在进行这些绘图时,需要在屏幕上看到另一个缓冲区。前缓冲区。翻转它们,然后再次绘制。我知道这个概念,但是很难将这些对象连接到这个概念。
它们的概念和区别是什么?
Answers:
该帧缓冲区对象并不是一个真正的缓冲区,但包含一个或多个附件,它通过轮到自己,是实际的缓冲区的聚合对象。您可以将Framebuffer理解为C结构,其中每个成员都是指向缓冲区的指针。没有任何附件,Framebuffer对象的占用空间非常小。
现在,连接到Framebuffer的每个缓冲区可以是Renderbuffer或纹理。
所述渲染是一个实际的缓冲液(字节,或整数,或像素的阵列)。该渲染原生格式存储的像素值,所以它的屏幕外渲染优化。换句话说,绘制到Renderbuffer比绘制到纹理要快得多。缺点是像素使用与实现有关的本机格式,因此从Renderbuffer读取要比从纹理读取难得多。但是,一旦绘制了Renderbuffer,就可以使用像素传输操作非常快速地将其内容直接复制到屏幕(或我想复制到其他Renderbuffer)中。这意味着渲染缓冲区 可用于有效地实现您提到的双缓冲区模式。
渲染缓冲区是一个相对较新的概念。在此之前,使用了帧缓冲区来渲染纹理,由于纹理使用标准格式,因此渲染速度可能较慢。仍然可以渲染到纹理,当需要在每个像素上执行多次传递以构建场景或在另一个场景的表面上绘制场景时,这非常有用!
OpenGL Wiki的此页面显示更多详细信息和链接。