使用D3D,我需要在退出过程之前调用release吗?

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

要回复问题请先登录注册