我遇到了一个非常奇怪的问题。当我在D3D中创建一些非常简单的VertexBuffer和IndexBuffer时,从TaskManager报告的内存消耗是巨大的。创建几个顶点和索引缓冲区时需要大量内存
我通过D3D CreateIndexBuffer方法创建了60000索引缓冲区。每个索引缓冲区都包含6个表示两个三角形的索引(int)。所以,一个索引缓冲区将占用24个字节。内存消耗总量为24 * 60000 = 1,440,000。但任务管理器显示应用程序增加300MB内存!
我不知道D3D9是如何在内部执行内存分配的,但是这个问题也发生在D3D10中。这是由于内存碎片?
这是在86 | bebug版本,D3D是发行版本,Windows 7的
Index Buffer!= array。而且,每个内存分配通常具有大约16个字节的开销。 – 2010-09-08 13:37:48
您是否使用动态索引缓冲区? (图/取消映射)。参考设备是否产生相同的内存消耗水平? – Stringer 2010-09-08 18:45:25
它在只读的管理池中。 – Buzz 2010-09-09 00:08:18