Eon*_*nil 126 opengl rendering framebuffer
我对Framebuffer和Renderbuffer的概念感到困惑.我知道他们需要渲染,但我想在使用之前了解它们.
我知道存储临时绘图结果需要一些位图缓冲区.后缓冲区.当这些图纸正在进行时,需要在屏幕上看到另一个缓冲区.前缓冲区.翻转它们,再画一遍.我知道这个概念,但很难将这些对象与这个概念联系起来.
它们的概念和差异是什么?
fer*_*olo 178
该帧缓冲区对象并不是一个真正的缓冲区,但包含一个或多个附件,它通过轮到自己,是实际的缓冲区的聚合对象.您可以将Framebuffer理解为C结构,其中每个成员都是指向缓冲区的指针.没有任何附件,Framebuffer对象的占用空间非常小.
现在连接到Framebuffer的每个缓冲区可以是Renderbuffer或纹理.
所述渲染是一个实际的缓冲液(字节,或整数,或像素的阵列).该渲染将存储像素原生格式的值,所以它的屏幕外渲染优化.换句话说,绘制到Renderbuffer可能比绘制到纹理快得多.缺点是像素使用原生的,依赖于实现的格式,因此从Renderbuffer读取比从纹理读取要困难得多.然而,一旦绘制了Renderbuffer,就可以使用像素传输操作将其内容直接复制到屏幕(或其他Renderbuffer,我猜).这意味着一个Renderbuffer 可用于有效地实现您提到的双缓冲模式.
Renderbuffers是一个相对较新的概念.在它们之前,使用Framebuffer渲染到纹理,由于纹理使用标准格式,因此纹理可能会变慢.仍然可以渲染到纹理,当需要在每个像素上执行多次传递以构建场景或在另一个场景的表面上绘制场景时,这非常有用!
OpenGL wiki有这个页面,显示更多细节和链接.
| 归档时间: |
|
| 查看次数: |
35326 次 |
| 最近记录: |