1

我想将 dds 文件加载到 Qt 5.1 中,并具有节省内存和提高渲染性能的好处,因为 dds 文件在许多情况下比它们的 png 等效文件更小(由于数据破坏压缩),并且存储在更缓存友好渲染结构“平铺”(即http://fgiesen.wordpress.com/2011/01/17/texture-tiling-and-swizzling/)比通常的原始图像数据。

但是......我在谷歌搜索时找不到关于这个主题的任何参考资料保留所有不好的部分,例如更多的内存、较低的纹理读取效率以及现在的压缩伪影。

我是否误解了 Qt 如何处理纹理,或者 dds 格式 dxt1-5 是否可以在 Qt 5.1 中正确使用?

QImageReader 是否将 dds 文件“解包”为原始文件或实际将它们直接加载到图形硬件?

非常感谢任何其他建议或指示。

4

1 回答 1

1

QImage 是一个纯软件对象,它不在显卡上存储任何东西,也不支持外部数据排序。此处列出了 QImage 支持的内部格式:https ://doc.qt.io/qt-5/qimage.html#Format-enum

因此,除了解压所有内容并将其展平之外,您基本上没有其他选择将数据放入 QImage 中。

QPixmap 支持直接从文件中读取,见https://doc.qt.io/qt-5/qpixmap.html#load

与 QImage 不同,QPixmap 是一个将其数据存储在显卡上的对象。在给定 Qt 接口的情况下,理论上可以按照您的设想进行操作。然而,我有根据的猜测是 Qt 仍然根本不支持这一点。

于 2014-03-20T01:09:28.723 回答