项目中遇到的direct3d问题,设备丢失

今天在调试项目的时候,遇到一个问题,之前在写代码的时候,调试都是在本地的电脑上进行调试,然而今天是通过远程登陆到电脑进行调试的,所以在调试的过程中遇到了一个问题。

其实开始的时候,有同事反应说,当远程登陆播放的时候,另外一个人登陆进去,开始在播放的那一方退出,然后播放器就崩溃了。然后我看了下打印信息,以为一直是系统的原因,缺少什么库,或者库不完整的原因。

然而后面因为急着需要,所以就认真查看了下原因,看了下崩溃的时候,windows提示的信息是d3d.dll出错。

直到今天,我本人远程到自己的开发电脑上调试的时候,出现了一个问题,就是播放的好好的,然后,当我把远程桌面整个最小化的时候,回到本地播放电脑的时候,再回到远程桌面,播放器就崩溃了。

于是就认真跟踪了下程序,在我们播放器中,D3D,我是用来显示视频用的,代码量不是特别多,所以在重要的函数地方,叫打印信息。

最后重复上面的动作,播放器崩溃了,然后查看,发现时崩溃在:

if(m_pd3dSurface[ddpos] == NULL) return nRet;
switch (m_pd3dDevice[ddpos]->TestCooperativeLevel()){//测试设备丢失状态,即检测设备的当前状态
case D3D_OK://一切正常
break;
case D3DERR_DEVICELOST://设备丢失
CloseDirectDraw();
if (!this->InitDirectDraw ())
{
CloseDirectDraw();

return 0;
}
break;;
case D3DERR_DEVICENOTRESET://复位丢失,可以reset
//m_pd3dDevice[ddpos]->Reset(0);//bug-----所在的位置

m_pd3dDevice[ddpos]->Reset(&d3dpp);//modefy by lhp---解决上面崩溃的问题

CloseDirectDraw();

于是在网上查了下资料,认真看了下原因,原来是以为是在设备丢失以后调用复位函数出现的问题。

其中前面两篇随笔就是本人查找的过程中,个人觉得比较完整能解决问题的文章资料,所以就贴了过来,留作以后做参考。

时间: 2024-07-31 17:47:26

项目中遇到的direct3d问题,设备丢失的相关文章

(转)Direct3d 设备丢失 (device lost)

1.什么时候设备丢失 一个Direct3D设备, 有两种状态: 操作状态或丢失状态. 操作状态: 是设备的正常状态, 设备按预期运行, 并且能present所有渲染效果 丢失状态: 所有渲染操作悄然失败, IDirect3DDevice9::present返回错误码D3DERR_DEVICELOST 查帮助Lost Devices (Direct3D 9)看更详细介绍,用最民工的语言简略说说:什么时候设备会丢失? (1)全屏模式下当前Direct3D窗口丢失焦点时 (2)有多个Direct3D窗

eclipse项目中丢失的R包找回方法

当我们项目中的R文件丢失的时候会令我们痛苦不已,怎样找回呢?总不能删了吧,那样心血会毁于一旦的,我们肯定不会那样做,那要怎么办呢?我这里提供三种方法: ?一,一般情况下这样: ?    ?方法一:选中项目clean一下: ?    ?方法二:选中项目然后右击找到Android Tool再Fix一下: ?二,第二种情况下: ?    ?1,找到你的xxx.xml文件,首先找到报错的,把错误改正过来,这样应该就可以了. ?    ?2,如果第一种方法不行,就把自己的xxx.xml文件都改动改动,然后

安卓项目中的R.java文件丢失如何解决

第一种方法,也就是你的项目没有什么大的问题的话,那么就作出如图所示的选择,应该就可以解决你的问题了. 第二种就是看看你这边有没有勾选图中所示的选项,也就是你的r.java能不能自动生成. 第三种深层次一点的就是,你先clear一下,然后再build automatically一下,应该就可以了.如图所示. 如果这些都没能够解决你的问题,那么很可能是你很久没有开发项目了,你的sdk要更新了,如图所示. 以上四种方法基本可以解决你的这个问题.如没解决,可以留言. 安卓项目中的R.java文件丢失如何

Android项目中的R文件丢失

Android项目中的R文件丢失恢复的方法如下: (1).修改xml文件命名中的大写字母 (2).选中项目,点击 Project - Clean , 清理一下项目: (3).从别的工程中拷贝一份R文件过来,然后string.xml里随便改动一下,也可更新R文件. (4).右击你的工程(项目)-->Properties-->Android --> 选择相应的target 然后 点击 apply 即可.

MVC项目中如何判断用户是在用什么设备进行访问

使用UAParser在C#MVC项目中如何判断用户是在用什么设备进行访问(手机,平板还是普通的电脑) 现在我们开发的很多web应用都要支持手机等移动设备.为了让手机用户能有更加好的用户体验,我们经常为手机设备专门准备一套前端的页面.这样当用户使用普通电脑来访问的时候,我们的应用就向用户展示普通电脑的页面.当用户使用手机等移动设备来访问我们的系统的时候,我们就向用户展示手机设备的页面.但是这时候另一个问题出现了.如何判断用户在使用什么设备访问我们的应用?是使用手机还是普通电脑? 网上能查到的不同的

谈谈23种设计模式在Android源码及项目中的应用

本文首发于个人博客:Lam's Blog - 谈谈23种设计模式在Android源码及项目中的应用,文章由MarkDown语法编写,可能不同平台渲染效果不一,如果有存在排版错误图片无法显示等问题,烦请移至个人博客,如果个人博客无法访问可以留言告诉我,转载请声明个人博客出处,谢谢. 前言 本文将结合实际谈谈23种设计模式,每种设计模式涉及 * 定义:抽象化的定义与通俗的描述,尽量说明清楚其含义与应用场景 * 示例:如果项目中有使用过该模式,则会给出项目中的代码,否则会给出尽可能简单好理解的java

iOS项目中常用的第三方开源库

1.项目使用的第三方开源库 http://github.ibireme.com/github/list/ios/整理了比较常用的iOS第三方组件,以及github上的统计. 项目使用了CocoaPods(类似java中的maven)管理常用的第三方库,一些特殊的单独引用,下面介绍下比较好用的几个. (1)AFNetworking 目前比较推荐的iOS网络请求组件,默认网络请求是异步,通过block回调的方式对返回数据进行处理. 需要注意的是AFNetworking对服务器返回的ContentTy

Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图

标签: Android百度地图API Key  分类: Android 百度地图开发(2)  最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地图入手,其实他们的用法都差不多,本篇文章就带领大家在自己的Android项目中加入百度地图的功能,接下来我会写一系列关于百度地图的文章,欢迎大家到时候关注!   一 申请API key 在使用百度地图之前,我们必须去申请一个百度地图的API key,申请地址http://lbsyun.baidu.com/a

Android的学习之路(四)项目中清单文件的学习和android中经常使用的显示单位

1.所谓的清单文件就是项目中的AndroidManifest.xml文件.这个文件但是有大用处的.比方:app的名字,图标.app支持的版本号app的包名等等.以下我就介绍下这个清单文件的各个參数的作用. <manifest xmlns:android="http://schemas.android.com/apk/res/android"命名空间 package="com.example.hello"包名唯一标示一个应用 android:versionCod