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