Pro*_*ude 1 opengl framebuffer depth-buffer
在DirectX中,您可以拥有单独的渲染目标和深度缓冲区,因此您可以绑定渲染目标和深度缓冲区,执行一些渲染,移除深度缓冲区,然后使用旧的深度缓冲区作为纹理进行更多渲染.
你会如何在opengl中解决这个问题?根据我的理解,你有一个framebuffer对象,它包含颜色缓冲区和可选的深度缓冲区.我不认为我可以同时绑定几个帧缓冲对象,我是否必须在每次更改时重新创建帧缓冲对象(可能是帧的几次)?普通的opengl程序如何做到这一点?
一帧缓冲区对象只不过是一个系列图像的引用的多.这些可以是纹理中的图像(例如2D纹理的mipmap图层)或Renderbuffers(不能用作纹理).
没有什么可以阻止你组装一个FBO,它使用纹理图像作为颜色缓冲区,纹理图像作为深度缓冲区.也没有任何东西阻止你以后(只要你没有渲染到那个FBO这样做)从纹理采样作为深度纹理.FBO并没有突然拥有这些图像或其他东西.
很有可能,发生的事情是你误解了FBO和OpenGL 默认帧缓冲区之间的区别.默认的帧缓冲区(即:窗口)是不可更改的.你不能把它的深度缓冲区用作纹理或其他东西.你用FBO做的事情是你自己的事,但OpenGL不会让你以同样的方式玩它的默认帧缓冲.
| 归档时间: |
|
| 查看次数: |
1484 次 |
| 最近记录: |