FBO和PBO有什么区别?哪一个应该用于离屏渲染?OpenGL中的帧缓冲区对象和像素缓冲区对象之间有什么区别?
42
A
回答
17
12
苹果已经发布的 示例代码演示公益组织和宗教组织 两个非常不错位。尽管这些是特定于Mac的 ,但作为示例代码,它们在任何平台上都很好,因为PBO和 FBO是OpenGL扩展,而不是 窗口系统扩展。
那么,所有这些对象是什么?这里的 情况:
70
是什么FBO和PBO之间的区别?
更好的问题是它们是如何相似的。唯一相似的是他们的名称。
A Framebuffer Object(注意大小写:framebuffer是一个单词,而不是两个)是一个包含多个图像的对象,可用作渲染目标。
- 甲Buffer Object。 FBO是而不是缓冲区对象。再次说明:framebuffer是一个词。
- 用于异步的缓冲对象uploading/downloading of pixel data to/from images。
如果你想渲染到纹理或只是non-screen framebuffer,那么你使用FBO。如果您尝试将像素数据异步读取到应用程序,或者您尝试异步传输像素数据到OpenGL图像,则使用PBO。
他们没什么相似之处。
4
我想强调一些东西。
FBO它不是内存块。我认为它看起来像指针的结构。您必须将纹理附加到FBO才能使用它。在附加纹理之后,您现在可以为其进行离屏渲染或二次传递效果。
struct FBO{
AttachColor0 *ptr0;
AttachColor1 *ptr1;
AttachColor2 *ptr2;
AttachDepth *ptr3;
};
在另一方面,PBO是存储器块“块保持的存储器类型。“试着将它看作x尺寸的malloc,然后你可以使用memcpy将数据从它复制到纹理/ FBO或它。”
- 为什么要使用PBO?
创建中间内存缓冲区来与主机内存交互,而不是停止OpenGL绘图将纹理上传到主机或从主机上传纹理。
相关问题
- 1. OpenCL中的缓冲区对象和图像缓冲区对象
- 2. OpenCL中的图像和缓冲区之间有什么区别?
- 3. LWJGL/OpenGL顶点缓冲区对象
- 4. OpenGL:缓冲区对象性能问题
- 5. 帧缓冲区对象错误?
- 6. 帧缓冲区对象创建错误
- 7. 读缓冲区对象
- 8. 帧缓冲区/颜色缓冲区?
- 9. 绑定模板渲染缓冲区帧缓冲区在OpenGL
- 10. iPhone和顶点缓冲区对象
- 11. 为什么绑定OpenGL缓冲区对象?
- 12. 对象中的播放缓冲区AL
- 13. HDF5:“文件缓冲区”和“文件缓存”有什么区别?
- 14. 缓冲区和缓存区别?
- 15. PHP + MySQL:缓冲和非缓冲查询之间的区别
- 16. OpenGL顶点和缓冲区
- 17. 带SDL的顶点缓冲区对象
- 18. 带有多个绘制缓冲区的帧缓冲区
- 19. 什么是iOS OpenGL ES 2.0离屏帧缓冲区对象用于?
- 20. vim中的缓冲区和寄存器有什么区别?
- 21. RGB缓冲区到JPEG缓冲区,这里有什么问题?
- 22. iOS OpenGL ES:何时应该绑定帧缓冲区和渲染缓冲区?
- 23. 缩放OpenGL ES的帧缓冲区的
- 24. C缓冲区C#位图对象
- 25. 困难来自于缓冲区对象
- 26. 减少缓冲区对象大小
- 27. 不能与缓冲区对象绘制
- 28. 何时删除缓冲区对象?
- 29. TypeError:预期单段缓冲区对象
- 30. 将流写入缓冲区对象
让我们希望这个问题在纯链接答案和(不幸接受的)错误答案上面投票。 – 2012-06-09 16:59:13
@ChristianRau:我查过了,而OP似乎仍然是常客。所以希望它能被接受。 – 2012-06-09 17:02:01