【发布时间】:2013-06-06 04:14:41
【问题描述】:
我打算用 C++ 和 DirectX 9 制作游戏引擎。所以我只是在 Direct3D 中测试功能。我的问题是,当我使用 Direct3DX 函数(文本、纹理、网格)渲染对象时,应用程序的内存使用量不断上升,而我的 PC 性能下降。当我只有一个没有任何渲染的清除场景时,内存使用量保持在 4mb 左右,但是当我添加文本或网格(即使使用预定义的网格绘制函数,即 D3DXCreateBox、D3DXCreateTeapot)时,就会出现上述问题。任何人都可以帮我解决它吗? 注意:当我不在循环中渲染时,内存使用量保持在 9mb,但当然,一切都保持静态。
【问题讨论】:
-
您如何测量内存使用情况?仅供参考,任务管理器对此几乎没有用处。此外,还有无数种可能发生内存泄漏的方式。除非您给我们Short, Self Contained, Correct (Compilable), Example,否则我们无法为您提供帮助。
-
代码示例?我没有使用过 DirectX,但从你所说的情况来看,必须在重新渲染之前清除场景......
-
@KerrekSB 使用 DirectX,您需要使用指针,因为图形资源是引用计数对象。虽然使用智能指针肯定比使用原始指针更好(但前提是您需要强引用)。
-
@user1775315:在这种情况下,我会说设计一个健壮、健全的包装器(例如 like this)并使用它。
-
@KerrekSB Direct3D API 已经非常健壮和健全。图形资源本质上是不可复制的,因此您需要不同的所有权机制。并且侵入式引用计数(COM 方式)优于非侵入式引用计数(shared_ptr 方式)。
标签: c++ memory-leaks directx-9