D3D11与D3D9全屏/窗口化切换差异
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全屏/窗口化切换差异相关推荐
- 全屏游戏切换至窗口化
把全屏游戏切换至窗口化显示有两种方式. 一种是利用-window来显示 1. 首先新建.exe程序的快捷方式 2. 打开快捷方式的属性修改 如上图,在目标那里的最后加入: -window 注意空格 2 ...
- android 全屏动画,Android开发之全屏与非全屏的切换设置方法小结
本文实例讲述了Android开发之全屏与非全屏的切换设置方法.分享给大家供大家参考,具体如下: 静态方法 1. 代码方式 在Activity类OnCreate方法中设置,代码如下 @Override ...
- 基于jQuery商城网站全屏图片切换代码
基于jQuery商城网站全屏图片切换代码.这是一款商城网站全屏多张图片滑动切换代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class="sli ...
- android动态设置全屏,Android开发之全屏与非全屏的切换设置方法小结
本文实例讲述了Android开发之全屏与非全屏的切换设置方法.分享给大家供大家参考,具体如下: 静态方法 1. 代码方式 在Activity类OnCreate方法中设置,代码如下 @Override ...
- 全屏功能-实现全屏-图标切换
目标:添加一个按钮,实现全屏网页全屏切换 实现方法:浏览器中自带全屏功能document.documentElement.webkitRequestFullScreen(),不过有兼容性问题,所以改用 ...
- Android视频播放器实现小窗口和全屏状态切换
Android视频播放器实现小窗口和全屏状态切换 实在是不好意思,楼下评论的兄弟久等了,这文章一直没写第一是没时间,第二是自己准备也不充足,最近才看了好几个Android视频播放器的开源项目,才对视频 ...
- html5全屏幻灯片自动切换,html5特效-全屏幻灯片切换动画,支持拖拽
html5全屏幻灯片切换动画的特效,支持拖拽,完整源码下载地址: http://pan.baidu.com/s/1nvwcLxJ 密码: dmgr 效果预览图如下: 全屏幻灯片切换动画,支持拖拽 in ...
- 【Unity3D】场景切换、全屏/恢复切换、退出游戏、截屏
1 前言 1)场景切换 场景切换可以使用 SceneManager 的 LoadScene 和 LoadSceneAsync 方法,如下: public static void LoadScene(s ...
- vue+element ui 设置页面全屏 全屏和退出全屏的切换
vue+element ui 设置页面全屏 全屏和退出全屏的切换 方式1 screenfull 插件 // 属性 screenfull.isFullscreen; // 判断当前页是否全屏 返回类型 ...
最新文章
- 关于学习Python的一点学习总结(23->while语句与else)
- PHP URL处理关键函数parse_url、parse_str与http_build_query
- JAVA正则表达式:Pattern类与Matcher类详解(转)
- 手把手Tinyxml入门,C++ VS2010
- python有哪些插件_Python和它高大上的插件们
- 【转】 SED多行模式空间
- Laravel向视图传递变量的两种方法
- 中英金融科技论坛:监管科技增长较快 区块链等新技术挑战监管能力
- Mysql 演示示例存储过程
- Javaweb-学习路线
- speedoffice如何在Word表格中插入行或列
- error C2440 无法转换到 AFX_PMSG mfc自定义信号及实现 PostMessage FindWindow
- Error(15) 解决 sshd: no hostkeys available -- exiting.
- 攻防世界 WEB Web_python_flask_sql_injection
- Linux-重命名命令rename
- Qt:Qt导出Excel表格
- 《Java8实战》第9章 重构、测试和调试
- 一文搞懂各种架构(业务架构、应用架构、数据架构...
- verilog中always和initial的区别
- 引用 捧腹笑话24小时最好笑