写入纹理数组的一层并从另一层读取
Writing to one layer of a texture array and reading from another
我目前正在OpenGL 3D引擎中实现深度剥离。我想将值存储在深度 2D 纹理数组中。该算法在第 n 次执行时需要读取 n-1 层,如果当前值更大(物体远),则将当前值插入第 n 层。但是,我们不应该能够以相同的纹理进行读写。
例如,是否可以从中读取(仅第 n 层第 1 层)并将第 n 层附加为当前 FBO 的深度附件?
但是,我们不应该能够以相同的纹理进行读写。
谁说的?
纹理存储图像。请注意复数形式。没有禁止读取和写入相同的纹理。禁止读取和写入同一图像。
数组纹理包含多个图像。每个阵列层都是其自己的 2D 图像(或一组 2D mipmap 图像)。因此,从一个数组层读取并写入另一个数组层是完全合法的。从数组层中的一个 mipmap 读取并写入同一数组层中的另一个 mipmap 是完全合法的。
不合法的是在同一阵列层的同一 mipmap 上读取/写入。
这就是为什么如果相同的纹理附加到 FBO 同时绑定到渲染上下文以供读取,OpenGL 不会给出错误。只要您确保不读取/写入同一图像,这是合法的。
相关文章:
- 如何使用C++一次读取整个二进制文件
- 无法使用两个包装不同下一层的ssl_stream编译代码
- 如何从文本文件中一次读取一个字符
- 一次读取一个字节的 unicode
- 一次读取一个字符的文件,直到使用 read(2) 和 write(2) 换行符
- 快速简单的方法,以C++为单位一次读取一个字节的 stdin
- 尝试一次读取一个字符的矩阵
- 我如何一次读取和写3位
- 如何从文件中一次读取一个输入,类似于在c++中使用cin/scanf从控制台读取输入
- 一次读取两个字节的.dat文件
- 一次读取一个字符的字符串,直到行或文件末尾
- 如何一次读取一个数字并将其存储在数组中,跳过重复项
- 写入纹理数组的一层并从另一层读取
- 从 istream 输入中一次读取一个字符
- 启动 QProcess 并一次读取一行输出
- 使用 .get() 一次读取一个字节
- 动态字符字段一次读取一个字符
- 在C++中一次读取一个文件一个int
- 如何在c++中一次读取多个布尔运算符
- C/ c++一次读取一行