0

到目前为止,我一直使用 DDS (DXT5) 来快速加载纹理数据。现在,我读到自 OpenGL 4.3(和 ES2)以来,压缩标准是 KTX(ETC1/ETC2)。我集成了 Khronos libktx SDK 并进行了基准测试。使用glCompressedTexSubImage2D更新纹理 3000 次,结果为:

DDS:1450 - 毫秒

KTX - 永远....

实际上,只运行了300次更新KTX的循环,总时间已经达到了24秒!

现在我有两个问题:

  1. 这是KTX的预期速度吗?

  2. 如果第一个问题的答案是“是”,那么除了文件大小比 DDS 小之外,ETC 的优势是什么?

我使用带有 Quadro4000 GPU 的 OpenGL 4.3。

4

1 回答 1

0

我在 Khronos KTX 论坛上问过这个问题。这是我从论坛版主那里得到的答案:

NVIDIA OpenGL 驱动程序团队告诉我,Quadro 4000 在硬件上不支持 ETC,但它支持 DXTC。这意味着 ETC 压缩图像将由软件中的 OpenGL 驱动程序解压缩,然后加载到 GPU 内存中,而 DXTC 压缩图像将简单地加载到 GPU 内存中。我相信这是您观察到的性能差异的根源。

所以我的卡的硬件似乎不支持 ETC。

于 2013-08-14T20:26:59.970 回答