我使用DDS(DXT5)来快速加载纹理数据。现在,我read自OpenGL 4.3(和ES2)以来,压缩标准是KTX(ETC1 / ETC2)。我集成了Khronos libktx SDK和替补标记。 使用 glCompressedTexSubImage2D 更新纹理3000次结果是:
DDS: 1450 - 毫秒
KTX - 永远......
实际上,运行一次只有300次更新KTX的循环,总时间已经达到24秒!
现在我有两个问题:
这是KTX的预期速度吗?
如果第一个问题的答案是“是”,那么除了文件大小小于DDS之外,ETC的优点是什么?
我使用OpenGL 4.3和Quadro4000 GPU。
答案 0 :(得分:0)
我在Khronos KTX论坛上问过这个问题。这是我从论坛主持人那里得到的答案:
NVIDIA OpenGL驱动团队告诉我Quadro 4000 虽然它支持DXTC,但不支持硬件中的ETC。这个 表示ETC压缩的图像将由OpenGL解压缩 软件驱动程序然后加载到GPU内存中 DXTC压缩的图像将被简单地加载到GPU内存中。一世 相信这是你的性能差异的来源 观察。
所以我的卡的硬件似乎不支持ETC。