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

问题描述

| 我正在为Direct3d编写的教程说: \“ ...基本上,如果您创建Direct3D,但是从不关闭它,则即使在程序本身关闭后,它也将一直在计算机的后台运行,直到您下次重新启动为止。很糟糕。释放游戏中的资源。释放这两个界面可以使所有事情脱颖而出,并允许Windows收回它的内存。”(链接) 我真的不相信本教程说的是,退出该过程后资源仍然会闲散... 就像我的程序崩溃或在调试时仅按Stop一样。和其他使用DirectX的游戏一样,我经常通过杀死进程来关闭它们。 如果我退出进程并且不调用device-> Release,资源对操作系统是免费的吗?     

解决方法

简单地说,不。那是不对的。当您的进程终止时,将释放所有DirectX资源,并且不会泄漏任何GPU或系统内存。     ,确实可以回收与进程相关的资源,例如内存,线程,句柄等,但请记住,D3D还在视频硬件上利用内存和资源。根据您的特定实现,不通知D3D您将要关闭就可以并且不会在进程退出时清除所有这些信息。 我已经看到在使用Managed DX9接口的软件中出现了一些非常有趣的渲染工件,直到进行EvictManagedResources调用后,这些清理工件才清理干净。这些工件发生在自动化测试套件中,是的-它们在同一进程的不同调用之间持久存在(如显示/帧缓冲区上的垃圾小矩形)。 正确编码的应用仍然可以对内部异常和/或进程终止请求(WM_QUERYENDSESSION等)做出适当反应,并执行此清除操作。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...