社区
界面
帖子详情
DX9 锁屏后, Reset设备还原失败
robert_duan
2015-01-21 10:36:09
Reset还原失败, 返回值: D3DERR_DEVICELOST
网上百度查了一下, 大部分说的是D3DPOOL_DEFAULT没有释放或者没有释放干净.
我看了一下代码, 在D3DPOOL_DEFAULT池中创建的都释放了,但还是锁屏后 设备还原失败, 难道还有其他原因么?
求各位大虾指点!
...全文
422
6
打赏
收藏
DX9 锁屏后, Reset设备还原失败
Reset还原失败, 返回值: D3DERR_DEVICELOST 网上百度查了一下, 大部分说的是D3DPOOL_DEFAULT没有释放或者没有释放干净. 我看了一下代码, 在D3DPOOL_DEFAULT池中创建的都释放了,但还是锁屏后 设备还原失败, 难道还有其他原因么? 求各位大虾指点!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
不甘平凡的小鸟
2017-07-06
打赏
举报
回复
显示部分怎么写的?backbuffer有没有release?
猿说编程
2015-06-24
打赏
举报
回复
楼主问题解决了吗
向立天
2015-03-07
打赏
举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了
疑难问题汇总帖
并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面
界面版关于版主结帖工作的具体办法
robert_duan
2015-01-21
打赏
举报
回复
这是相关代码, 看看是否有什么问题 /// 初使化D3D HRESULT InitD3D() { // 创建D3D顶层指针 FAILED--失败 SUCCEEDED -- 成功 HRESULT hRet; if (NULL == (m_pD3D = Direct3DCreate(D3D_SDK_VERSION))) { return E_FAIL; } // 想要给结构体赋值,要得到当前显卡的显示模式 D3DDISPLAYMODE d3dpp; m_pD3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT,//主显卡 &d3dpp ); // 创建设备需要一个结构体 // 清空结构体 ZeroMemory(&m_d3dmm,sizeof(m_d3dmm)); m_d3dmm.Windowed = TRUE; // 窗口模式(TRUE)与全屏模式(FALSE)的设置 // 交换后把后台清空 m_d3dmm.SwapEffect = D3DSWAPEFFECT_DISCARD; // 前台与后台交换后的方式 m_d3dmm.BackBufferFormat=d3dpp.Format; // 设置显卡的模式与后台一致 m_d3dmm.EnableAutoDepthStencil = TRUE; m_d3dmm.AutoDepthStencilFormat = D3DFMT_D16; hRet = m_pD3D->CreateDevice( D3DADAPTER_DEFAULT, // 创建在主显卡中 D3DDEVTYPE_HAL , // 设备类型,硬件抽象层 D3DDEVTYPE_REF D3DDEVTYPE_HAL D3DDEVTYPE_SW m_hwnd, // 当前窗口句柄 D3DCREATE_HARDWARE_VERTEXPROCESSING,// D3DCREATE_SOFTWARE_VERTEXPROCESSING,//顶点处理方式--软件处理 D3DCREATE_HARDWARE_VERTEXPROCESSING--硬件处理 &m_d3dmm, // 结构体 &m_pDev // 设备指针 ); if (FAILED(hRet)) { Log("硬件方式失败,采用软件方式处理"); hRet = m_pD3D->CreateDevice( D3DADAPTER_DEFAULT, // 创建在主显卡中 D3DDEVTYPE_HAL , // 设备类型,硬件抽象层 D3DDEVTYPE_REF D3DDEVTYPE_HAL D3DDEVTYPE_SW m_hwnd, // 当前窗口句柄 D3DCREATE_SOFTWARE_VERTEXPROCESSING,//D3DCREATE_SOFTWARE_VERTEXPROCESSING,//顶点处理方式--软件处理 D3DCREATE_HARDWARE_VERTEXPROCESSING--硬件处理 &m_d3dmm, // 结构体 &m_pDev // 设备指针 ); } if (FAILED(hRet)) { switch(hRet) { case D3DERR_DEVICELOST: Log("D3D初始化失败——D3DERR_DEVICELOST"); break; case D3DERR_INVALIDCALL: Log("D3D初始化失败——D3DERR_INVALIDCALL"); break; case D3DERR_NOTAVAILABLE: Log("D3D初始化失败——D3DERR_NOTAVAILABLE"); break; case D3DERR_OUTOFVIDEOMEMORY: Log("D3D初始化失败——D3DERR_OUTOFVIDEOMEMORY"); break; default: Log("D3D初始化失败——未知错误"); break; } MessageBox(NULL, TEXT("D3D加速功能被禁用,请执行dxdiag开启D3D加速功能,或重新安装DirectX。"), TEXT("提示"), MB_OK | MB_ICONINFORMATION ); return E_FAIL; } return S_OK; } // 设备丢失还原 HRESULT OnResetDevice() { // 释放D3DPOOL_DEFAULT所有相关资源 OnDeviceLost(); RECT rcClient; GetClientRect(m_hwnd, &rcClient); int h = rcClient.bottom - rcClient.top; int w = rcClient.right - rcClient.left; if (w == 0 || h == 0) { } else { m_d3dmm.BackBufferWidth = w; m_d3dmm.BackBufferHeight = h; } D3DDISPLAYMODE ddpm2; #ifdef _GAME_DX8 m_pDev->GetDisplayMode(&ddpm2); #else m_pDev->GetDisplayMode(0, &ddpm2); #endif // 想要给结构体赋值,要得到当前显卡的显示模式 D3DDISPLAYMODE ddpm; m_pD3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, // 主显卡 &ddpm ); m_d3dmm.BackBufferFormat = ddpm.Format; m_d3dmm.hDeviceWindow = m_hwnd; ShowWindow(m_hwnd, SW_SHOW); /// 重置设备 HRESULT hr = m_pDev->Reset(&m_d3dmm); if (FAILED(hr)) { int nErr = 0; switch(hr) { case D3DERR_NOTFOUND: nErr = 1; break; case D3DERR_MOREDATA: nErr = 2; break; case D3DERR_DEVICELOST: nErr = 3; break; case D3DERR_DEVICENOTRESET: nErr = 4; break; case D3DERR_NOTAVAILABLE: nErr = 5; break; case D3DERR_OUTOFVIDEOMEMORY: nErr = 6; break; case D3DERR_INVALIDDEVICE: nErr = 7; break; case D3DERR_INVALIDCALL: nErr = 8; break; case D3DERR_DRIVERINVALIDCALL: nErr = 9; break; default: break; } log("OnDeviceLost 调用时m_pDev->Reset调用失败, Error(%d)", nErr); return hr; } /// 重新创建资源, 恢复场景 return S_OK; }
robert_duan
2015-01-21
打赏
举报
回复
现在出现这个D3DERR_INVALIDCALL错误了! 参数有错么?
Saleayas
2015-01-21
打赏
举报
回复
// The device has been lost but cannot be reset at this time. // So wait until it can be reset.
DX12基础知识讲解
市面上比较流行的引擎有Unity和UE4引擎,二者在PC端使用的是DX12图形API,作为想从事引擎开发的程序员,掌握DX12势在必行,以前给读者讲过
DX9
以及基于固定流水线实现的引擎。DX12相比
DX9
做了许多改进,包括可编程...
Android 悬浮窗
悬浮窗是一种比较常见的需求。例如把视频通话界面缩小成一个悬浮窗,然后用户可以在其他界面上处理事情。 本文给出一个简单的悬浮窗实现。可缩小activity和
还原
大小。可悬浮在其他activity上。使用TouchListener监听触摸事件,拖动悬浮窗。 本文链接 缩放方法 缩放activity需要使用WindowManager.LayoutParams,控制window的宽高 在activity中调用 android.view.WindowManager.LayoutParams p = getWindow
面试之其他面试题归类
文章目录他面试题知识点数据库相关面试题WebViewApplication、AndroidManifest、Context混淆、反编译、APP启动过程、apk安装过程、apk打包过程、系统启动过程其他 他面试题知识点 数据库相关面试题 左链接和右链接的区别 左连接where只影向右表,右连接where只影响左表。 select * from tbl1 Left Join tbl2 where ...
游戏编程
游戏编程指南 A Guide to Game Programming v1.10alpha 最后更新于2003.1.14 本文基于VC7.0 / DirectX 9.0 / Winsock 2.2 推荐使用Word 2000及以上版本阅读 大家看完之后如果有什么意见和建议请务必在留言簿提出,谢谢!!! 如果你认为任何地方写错了,请告诉我… 如果你认为任何地方难以理解,请告诉我… 如果你觉得这篇东西
葵花宝典(转自:https://blog.csdn.net/binbin594738977/article/details/79429301 )
android开发工具http://www.androiddevtools.cn/index.html API开发文档(不需要fq)https://developer.android.google.cn/reference/ API开发文档(需要fq)https://developer.android.com/ 15 个 Android 通用流行框架大全http://android-doc....
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章