OpenGL中的帧缓冲区对象和像素缓冲区对象之间有什么区别?

OpenGL中的帧缓冲区对象和像素缓冲区对象之间有什么区别?,opengl,Opengl,FBO和PBO的区别是什么?我应该使用哪一个进行屏幕外渲染?A(帧缓冲区对象)是一个可以渲染除默认帧缓冲区或屏幕之外的图像的目标 (像素缓冲区对象)允许在设备之间异步传输像素数据。如果在等待像素传输时可以执行其他操作,则这有助于提高渲染时的总体性能 我会读到: 苹果发布了两个非常好的消息 演示PBO和PBO的示例代码 FBO。即使这些是 Mac专用,作为示例代码 在任何一个排上都很好,因为PBOs和 FBO是OpenGL扩展,而不是 窗口系统扩展 那么这些物体是什么呢?这是 情况: FBO和PB

FBO和PBO的区别是什么?我应该使用哪一个进行屏幕外渲染?

A(帧缓冲区对象)是一个可以渲染除默认帧缓冲区或屏幕之外的图像的目标

(像素缓冲区对象)允许在设备之间异步传输像素数据。如果在等待像素传输时可以执行其他操作,则这有助于提高渲染时的总体性能

我会读到:

苹果发布了两个非常好的消息 演示PBO和PBO的示例代码 FBO。即使这些是 Mac专用,作为示例代码 在任何一个排上都很好,因为PBOs和 FBO是OpenGL扩展,而不是 窗口系统扩展

那么这些物体是什么呢?这是 情况:

FBO和PBO的区别是什么

一个更好的问题是它们有什么相似之处。他们唯一相似的地方就是他们的名字

A(注意大小写:framebuffer是一个单词,而不是两个)是一个包含多个图像的对象,这些图像可以用作渲染目标

A是:

  • A。FBO不是缓冲区对象。再说一遍:帧缓冲区是一个单词
  • 用于异步的缓冲区对象
  • 如果要渲染到纹理或仅渲染到纹理,则可以使用FBO。如果您尝试异步地将像素数据读回应用程序,或者尝试异步地将像素数据传输到OpenGL图像,则使用PBOs


    他们一点都不一样。

    我想强调一点

    FBO它不是内存块。我认为它看起来像指针的结构。必须将纹理附加到FBO才能使用它。附加纹理后,现在可以绘制到该纹理以进行屏幕外渲染或第二遍效果

    struct FBO{
    AttachColor0 *ptr0;
    AttachColor1 *ptr1;
    AttachColor2 *ptr2;
    AttachDepth  *ptr3;
    };
    
    另一方面,PBO是内存块“用于保存内存类型的块”。尝试将其视为x大小的malloc,然后可以使用memcpy将数据从它复制到纹理/FBO或它”

    • 为什么要使用PBO

    创建中间内存缓冲区以与主机内存接口,而不是停止OpenGL绘图将纹理上载到主机或从主机上载纹理。

    我们只希望这比纯链接答案和(不幸被接受的)错误答案更高。@ChristianRau:我检查过了,OP似乎仍然是常规的。所以希望它能被接受。