D3D11或D3D10中,程序由窗口化切换到全屏,只需要简单的调用
IDXGISwapChain::SetFullscreenState  来改变换链的状态即可实现切换,开发者不用考虑资源丢失与重建的问题。

在D3D9中则不一样,D3D9中调用IDirect3DDevice9::Reset  来重建设备。
在重建设置之前呢,必须得手动释放与这个设备相关联的资源,不然函数调用会失败,
哪些资源是要释放的,哪些又不用释放呢?
资源在创建的时候,使用D3DPOOL_MANAGED标志创建可以不用释放,
资源在创建的时候,使用D3DPOOL_DEFAULT标志则必须释放,
比如ID3DXFont和ID3DXSprite就有自带的OnLostDevice方法,来暂时与device失去联系,重建device再调OnResetDevice方法恢复。
 
资源释放之后,调用 IDirect3DDevice9::Reset 来重建设备,设备重建之后,得重新恢复资源,设备在重建之前的相关矩阵变换,渲染状态及采样状态等都得重新恢复。

由上面可总结D3D9中窗口切换过程

1、OnLostDevice     这里处理重建前的资源释放
2、ResetDevice   重建device
3、OnResetDevice  恢复资源及相关状态

//-------------------设备丢失处理-----------------
 IDirect3DDevice9::Present  的返回值能检测一个设备此时的状态是不是丢失状态(丢失并不等于此时的设备不可用了),这里只是与之前创建时的显卡失去联系,

IDirect3DDevice9::TestCooperativeLevel()==D3DERR_DEVICENOTRESET

检测设备是否为未恢复状态,如果是,则执行OnLostDevice -- Reset ---  OnResetDevice 流程。

D3D11与D3D9全屏/窗口化切换差异相关推荐

  1. 全屏游戏切换至窗口化

    把全屏游戏切换至窗口化显示有两种方式. 一种是利用-window来显示 1. 首先新建.exe程序的快捷方式 2. 打开快捷方式的属性修改 如上图,在目标那里的最后加入: -window 注意空格 2 ...

  2. android 全屏动画,Android开发之全屏与非全屏的切换设置方法小结

    本文实例讲述了Android开发之全屏与非全屏的切换设置方法.分享给大家供大家参考,具体如下: 静态方法 1. 代码方式 在Activity类OnCreate方法中设置,代码如下 @Override ...

  3. 基于jQuery商城网站全屏图片切换代码

    基于jQuery商城网站全屏图片切换代码.这是一款商城网站全屏多张图片滑动切换代码.效果图如下: 在线预览    源码下载 实现的代码. html代码: <div class="sli ...

  4. android动态设置全屏,Android开发之全屏与非全屏的切换设置方法小结

    本文实例讲述了Android开发之全屏与非全屏的切换设置方法.分享给大家供大家参考,具体如下: 静态方法 1. 代码方式 在Activity类OnCreate方法中设置,代码如下 @Override ...

  5. 全屏功能-实现全屏-图标切换

    目标:添加一个按钮,实现全屏网页全屏切换 实现方法:浏览器中自带全屏功能document.documentElement.webkitRequestFullScreen(),不过有兼容性问题,所以改用 ...

  6. Android视频播放器实现小窗口和全屏状态切换

    Android视频播放器实现小窗口和全屏状态切换 实在是不好意思,楼下评论的兄弟久等了,这文章一直没写第一是没时间,第二是自己准备也不充足,最近才看了好几个Android视频播放器的开源项目,才对视频 ...

  7. html5全屏幻灯片自动切换,html5特效-全屏幻灯片切换动画,支持拖拽

    html5全屏幻灯片切换动画的特效,支持拖拽,完整源码下载地址: http://pan.baidu.com/s/1nvwcLxJ 密码: dmgr 效果预览图如下: 全屏幻灯片切换动画,支持拖拽 in ...

  8. 【Unity3D】场景切换、全屏/恢复切换、退出游戏、截屏

    1 前言 1)场景切换 场景切换可以使用 SceneManager 的 LoadScene 和 LoadSceneAsync 方法,如下: public static void LoadScene(s ...

  9. vue+element ui 设置页面全屏 全屏和退出全屏的切换

    vue+element ui 设置页面全屏 全屏和退出全屏的切换 方式1 screenfull 插件 // 属性 screenfull.isFullscreen; // 判断当前页是否全屏 返回类型 ...

最新文章

  1. 关于学习Python的一点学习总结(23->while语句与else)
  2. PHP URL处理关键函数parse_url、parse_str与http_build_query
  3. JAVA正则表达式:Pattern类与Matcher类详解(转)
  4. 手把手Tinyxml入门,C++ VS2010
  5. python有哪些插件_Python和它高大上的插件们
  6. 【转】 SED多行模式空间
  7. Laravel向视图传递变量的两种方法
  8. 中英金融科技论坛:监管科技增长较快 区块链等新技术挑战监管能力
  9. Mysql 演示示例存储过程
  10. Javaweb-学习路线
  11. speedoffice如何在Word表格中插入行或列
  12. error C2440 无法转换到 AFX_PMSG mfc自定义信号及实现 PostMessage FindWindow
  13. Error(15) 解决 sshd: no hostkeys available -- exiting.
  14. 攻防世界 WEB Web_python_flask_sql_injection
  15. Linux-重命名命令rename
  16. Qt:Qt导出Excel表格
  17. 《Java8实战》第9章 重构、测试和调试
  18. 一文搞懂各种架构(业务架构、应用架构、数据架构...
  19. verilog中always和initial的区别
  20. 引用 捧腹笑话24小时最好笑

热门文章

  1. SAP模块介绍及概念介绍
  2. Linux kernal API
  3. 减速器性能测试软件,RV减速器性能检测平台的研究
  4. 保研/考研简历中数模竞赛的经历,就该这样写
  5. 1011 World Cup Betting
  6. NS3-LENA源码阅读报告(1)
  7. iebook第一门户抢滩中国企业电子商刊(杂志)市场
  8. git拉取代码如何解决冲突_Git工具-git pull拉取代码时冲突的解决办法
  9. 复数在初等平面几何问题中的应用案例
  10. 社区人员登记管理系统