Qt 5 dds支持,节省内存和改善渲染
Qt 5 dds support to save memory and improve rendering
我想将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++中的稳定内存中
- 我应该以字符形式存储数字以节省内存吗?
- C++ 11 通过在类声明中使用指针来节省内存
- 使用常量可以节省内存吗?
- 使用动态库节省内存
- 用于查找范围重叠的更节省内存的算法
- C++:按常用基数对整数进行分组以节省内存
- 通过使用位数组而不是 int 来节省字典的内存
- 如何对上传程序服务器进行速率限制以节省内存
- 使用“std::shared_ptr”时可有效节省内存/编程
- 为什么指针在需要创建指向变量的指针时节省内存
- C++ 块代码在函数完成之前节省内存
- 我是否需要在C++中显式删除数组以节省内存
- 缩小 std::vector 的大小以适应其实际数据以节省内存使用?vec.swap() 在 MSVC 中不起作用?
- 一次只实例化一组类中的一个类,以节省内存
- 静态方法节省内存?(非托管代码)
- 为什么c++仍然不使用vector的共享资源来节省内存
- 指针和重复周期 - 我正在尝试节省内存
- 当许多unordered_map<字符串、双>具有与键完全相同的字符串集时如何节省内存
- Qt 5 dds支持,节省内存和改善渲染