gpt4 book ai didi

c++ - 创建多个顶点和索引缓冲区时会消耗大量内存

转载 作者:行者123 更新时间:2023-11-28 03:55:52 25 4
gpt4 key购买 nike

我遇到了一个很奇怪的问题。当我在 D3D 中创建一些非常简单的 VertexBuffer 和 IndexBuffer 时,TaskManager 报告的内存消耗很大。

我通过 D3D CreateIndexBuffer 方法创建了 60000 个索引缓冲区。每个索引缓冲区包含 6 个索引(int),代表两个三角形。因此,一个索引缓冲区将占用 24 个字节。总内存消耗为 24*60000 = 1,440,000。但是任务管理器显示应用程序内存增加了 300MB!

我不知道 D3D9 是如何在内部进行内存分配的,但这个问题也发生在 D3D10 中。这是因为内存碎片吗?

这是x86|bebug下的版本,d3d是release版本,windows 7。

最佳答案

60000 个索引缓冲区?为什么不只创建 1 个大索引缓冲区?切换所有这些索引缓冲区本身会很慢。

关于原因:您创建的每个索引缓冲区都会有开销(各种跟踪信息和驱动程序将用来优化它的信息位)并且 5K 内存对我来说似乎很合理. 5K * 60000 大约是 300 兆...

关于c++ - 创建多个顶点和索引缓冲区时会消耗大量内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3667879/

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