2012-07-02 52 views
0

我目前在OpenGL 3D引擎中实现深度剥离。我想将这些值存储在深度2D纹理数组中。该算法在第n次执行时需要读取n-1层,如果当前值较大(远处的对象),则将当前值插入第n层。但是,我们不应该能够读取和写入相同的纹理。写入纹理阵列的一层并从另一层读取

是否有可能从它读取(仅n-1层)并附加第n层作为当前FBO的深度附件?

回答

3

但是,我们不应该能够读取和写入相同的纹理。

说谁?

Textures店铺图片 s。注意复数。不禁止读取和写入相同的纹理。禁止是针对reading from and writing to the same image.

数组纹理包含多个图像。每个阵列层都是它自己的二维图像(或一组二维mipmap图像)。因此,从一个数组层读取并写入另一个数组层是完全合法的。从阵列层中的一个mipmap中读取数据并写入同一阵列层中的另一个mipmap是完全合法的。

什么是不合法的读写相同 mipmap的相同数组层。

这就是为什么如果将相同的纹理附加到FBO同时绑定到渲染上下文进行读取,OpenGL不会给出错误。只要你确保你没有阅读/写入相同的图像,这是合法的。

+0

好的,谢谢你的抬头! – Tuxer

+0

对于mip地图级别(即在一个纹理中,从一个mip地图级读取,写入另一个纹理),情况也会如此吗? – rsp1984

相关问题