0

我读过压缩纹理不可读且不可颜色渲染。尽管我对为什么不允许这样做有所了解,但有人可以详细解释一下。

它到底是什么意思它不可读。我无法使用图像加载等在着色器中读取它们?或者我什至不能从他们那里取样?

它不能渲染是什么意思?是不是因为用户无论如何都会看到所有垃圾,所以它是不允许的。

我没有尝试使用压缩纹理。

4

2 回答 2

2

根据该术语的最有用定义,压缩纹理是“可读的”。您可以通过采样器读取它们。但是,您不能imageLoad对它们使用操作。为什么?因为读取这样的内存不是简单的内存获取。它涉及获取大量内存并进行解压缩操作。

压缩图像不能进行颜色渲染,这意味着它们不能附加到 FBO 并用作渲染目标。有人可能认为这样做的原因很明显,但如果您需要,请说明。写入压缩图像需要动态进行图像压缩。并且大多数纹理压缩格式(或任何类型的压缩格式)都不是为了轻松处理更改一些值而设计的。更不用说,大多数压缩纹理格式都是有损的,因此每次进行解压缩/写入/重新压缩操作时,都会失去图像保真度。

于 2015-12-29T01:08:26.673 回答
1

来自OpenGL 维基

尽管是彩色格式,但出于显而易见的原因,压缩图像不可色彩渲染。因此,将压缩图像附加到帧缓冲区对象将导致 FBO 不完整,因此无法使用。出于类似的原因,没有压缩格式可以用作渲染缓冲区的内部格式。

所以“不可色彩渲染”意味着它们不能在 FBO 中使用。

我不确定“不可读”是什么意思;这可能意味着您无法将它们绑定到 FBO 并从 FBO 读取(因为您首先无法将它们绑定到 FBO)。

于 2014-08-08T23:51:30.137 回答