首页 > 解决方案 > 使用显卡在运行时生成 mipmap 或者使用文件中的纹理加载它们是否更快?

问题描述

我已经读过,将 mipmap 存储在与纹理相同的文件中并同时加载基本图像和 mipmap 是一种常见的做法。另一方面,从存储空间(HDD 或 SSD)读取比使用靠近 CPU 的内存要慢得多;OpenGL 和 Vulkan 等图形 API 允许您使用专用显卡生成 mipmap。

所以我想知道使用显卡在运行时生成 mipmap 是否真的会更快,而不是浪费循环等待虚拟内存读取。此外,如果纹理必须在运行时动态加载和卸载,答案是否会改变,从而允许其他操作在从存储空间加载时继续?

标签: performancegraphicsruntimetexturesmipmaps

解决方案


也许这不是您想要的答案,但是,从渲染性能的角度来看,IMO 建议压缩纹理(使用GPU 支持的任何内容),在这种情况下,您通常会生成 MIP 贴图,这很常见链并压缩“离线”。

假设您可以获得 2~8bpp 的压缩结果(即 32bpp 源的原始大小的 1/16 到 1/4 之间),压缩将很容易抵消 1/3 的开销,较小的 MIP 映射级别添加到纹理。

此外,在实践中,您在 GPU 上可能仅限于使用 2x2 盒式过滤器进行下采样,从质量角度来看,这可能不是最佳选择。

我假设您没有考虑可能“即时”生成的内容,例如反射的环境贴图等,在这种情况下,纹理压缩并不是一个真正的选择。


推荐阅读