如何解决Direct3D 为许多对象保留不同的纹理
我正在 DirectX 的帮助下探索程序生成的世界。我遇到的一个问题是纹理。我生成了很多对象,每个对象都在内存中存储了一个独特的纹理。
我目前使用的是 512x512 纹理,但如果我使用更详细的内存,则会开始呈指数级增长。
处理这种情况的好方法是什么?每帧生成纹理听起来很像一种刷新率冻结方法。
解决方法
我也是这方面的初学者,但我想我可以帮到你。您没有在此处放置任何代码,您至少应该向我们展示您如何渲染这些纹理。根据你说的:
“每帧生成纹理”
我假设您正在更新您的纹理。因为通常你不应该,你只在视频内存中加载一次纹理,方法是为它创建一个 COM 对象,并将它放在管道上使用 PSSetShaderResources
函数进行渲染,以便在你正在绘制的顶点缓冲区上进行绘制。低帧率的一个可能原因也可能是您正在绘制 512x512 纹理的顶点缓冲区是动态的,并且在运行时正在修改,这会使您的渲染速度变慢。在这种情况下,通常您会使用低分辨率纹理。
如果您仍然遇到纹理的性能问题,我建议您降低采样器 LOD。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。