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