如何解决使用D3D,我需要在退出过程之前调用release吗?
| 我正在为Direct3d编写的教程说: \“ ...基本上,如果您创建Direct3D,但是从不关闭它,则即使在程序本身关闭后,它也将一直在计算机的后台运行,直到您下次重新启动为止。很糟糕。释放游戏中的资源。释放这两个界面可以使所有事情脱颖而出,并允许Windows收回它的内存。”(链接) 我真的不相信本教程说的是,退出该过程后资源仍然会闲散... 就像我的程序崩溃或在调试时仅按Stop一样。和其他使用DirectX的游戏一样,我经常通过杀死进程来关闭它们。 如果我退出进程并且不调用device-> Release,资源对操作系统是免费的吗?解决方法
简单地说,不。那是不对的。当您的进程终止时,将释放所有DirectX资源,并且不会泄漏任何GPU或系统内存。
,确实可以回收与进程相关的资源,例如内存,线程,句柄等,但请记住,D3D还在视频硬件上利用内存和资源。根据您的特定实现,不通知D3D您将要关闭就可以并且不会在进程退出时清除所有这些信息。
我已经看到在使用Managed DX9接口的软件中出现了一些非常有趣的渲染工件,直到进行EvictManagedResources调用后,这些清理工件才清理干净。这些工件发生在自动化测试套件中,是的-它们在同一进程的不同调用之间持久存在(如显示/帧缓冲区上的垃圾小矩形)。
正确编码的应用仍然可以对内部异常和/或进程终止请求(WM_QUERYENDSESSION等)做出适当反应,并执行此清除操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。