【问题标题】:KTX vs DDS images in OpenGLOpenGL 中的 KTX 与 DDS 图像
【发布时间】:2016-11-19 22:34:03
【问题描述】:

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

DDS: 1450 - 毫秒

KTX - 永远....

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

现在我有两个问题:

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

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

我使用 OpenGL 4.3 和 Quadro4000 GPU。

【问题讨论】:

  • "我读到自 OpenGL 4.3(以及 ES2)以来,压缩标准是 KTX(ETC1/ETC2)。“不要相信你读到的一切。 特别是如果它在“OpenGL SDK”网站上。 KTX 绝不是“标准”。
  • 另外,KTX 只是一种文件格式。它可以很好地保存 S3TC 压缩格式以及未压缩格式。
  • S3TC 是我正在使用的。与我使用的 DDS DXT 压缩纹理相比,它的更新速度非常慢。
  • 如果文件包含相同的数据,然后发布一些代码。显然,问题在于用于获取数据的代码,而不是上传数据的代码(因为它们是一样的,对吧?)。
  • 好吧,代码来自Khronos ktxlib...无论如何都会发布它

标签: opengl dds-format


【解决方案1】:

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

NVIDIA OpenGL 驱动团队告诉我,Quadro 4000 不支持硬件ETC,但支持DXTC。这个 表示 ETC 压缩的图像将由 OpenGL 解压缩 软件中的驱动程序然后加载到 GPU 内存中,而 DXTC 压缩图像将简单地加载到 GPU 内存中。我 相信这是你的表现差异的根源 观察。

看来我的卡的硬件不支持 ETC。

【讨论】:

  • KTX 只是一个容器,特定文件中使用的实际像素格式可能受给定硬件支持,也可能不支持。所以你真的不能说任何硬件支持或不支持 KTX :)
猜你喜欢
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 2010-12-15
  • 2016-04-23
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多