我要将DirectX代码移植到OpenGL,需要选择合适的OpenGL版本。根据我在网上已经阅读的内容,我想做的事情甚至可能无法实现。
据我了解(虽然我可能错了),我可以使用默认深度缓冲区作为DirectX 10中的像素着色器资源[1]。这对于延迟照明很有用。在第一遍中,我将绘制网格,深度缓冲区将被填充。在后处理期间,我可以使用深度缓冲区信息。我不必使用多个渲染目标,并且可以通过这种方式节省一些内存和带宽。
在任何OpenGL版本中实现此目的的唯一方法是使用FBO和blitting [2,3]吗?
[1] http://bitwisegames.wordpress.com/2011/03/25/getting-direct-access-to-the-depthbuffer-in-directx10/
[2] http://www.gamedev.net/topic/578084-depth-buffer-and-deferred-rendering/
[3] http://www.opengl.org/discussion_boards/showthread.php/180782-Binding-to-a-different-depth-buffer