gpt4 book ai didi

c++ - Qt 5 dds 支持节省内存和改进渲染

转载 作者:太空宇宙 更新时间:2023-11-04 11:37:44 25 4
gpt4 key购买 nike

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

但是......我在谷歌搜索时找不到关于这个主题的任何引用我只找到其他阅读dds文件并将它们转换为QImage的人我怀疑它只会将dds解压缩到原始rgba中只会在阅读时提供一些额外的性能来自磁盘但保留所有不良部分,如更多内存、效率较低的纹素读取以及现在的压缩伪影。

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

QImageReader 是将 dds 文件“解压缩”为原始文件还是直接将它们直接加载到图形硬件?

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

最佳答案

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 仍然根本不支持这一点。

关于c++ - Qt 5 dds 支持节省内存和改进渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22521031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com