古墓丽影9运行游戏时提示failed to in direct3D with current settings解决方法
运行游戏时提示failed to in direct3D with current settings,怎么解决?如下图:将设置中的“全荧幕独占”前面的勾号去掉即可进入游戏
阅读本文后您有什么感想? 已有
人给出评价!
13-03-0713-03-0613-03-0613-03-0613-03-0513-03-0513-03-0513-03-04
注:您的评论需要经过审核才会显示出来
Copyright &
PC6下载().All Rights Reserved
备案编号:湘ICP备号怎样解决WINDOWS的Direct3DCreate出错的问题
在网上看到很多跑跑卡丁车的玩家说自己的游戏进入不了,一点击进入游戏就弹出"Fail
in calling Direct3DCreat",我同学的游戏正好也犯这毛病.
&&&&&&于是本人上卡丁官网,看到官方说用随意卸卸载系统原有的Direct再重装Direct9.0c就可解决问题.可是我同学试了无数次都证明这个方法不可行,最后甚至调出注册表对原有Direct逐一进行删除,但都没用.后来几经我们研究,得出一定论(我们自认为):凡是出现上述问题的系统都是某两个关于Direct的系统文件没装上或装上但已毁坏,或是中了木马(中木马的那两个文件已损坏机器才会出这种问题)!在此要告诉大家:翻版的系统碟很快(使用十次以下,有的甚至更少)就会丢失文件!所以,出现上述问题的唯一解决方法便是重装系统,而且决不能用之前那张***碟了!(杀毒或什么都不行,我们几乎试过了网上所有可能解决这问题的软件,结果都是失败)
此篇为多人经验之总结,希望能帮到更多人!
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。跑跑卡丁车怎样窗口化_跑跑卡丁车(网游) - QQ志乐园
您的当前位置: &
跑跑卡丁车怎样窗口化
来源: |人气:499 ℃|时间: 05:00:51
为了解决用户可能碰到关于"跑跑卡丁车怎样窗口化"相关的问题,志乐园经过收集整理为用户提供相关的解决办法,请注意,解决办法仅供参考,不代表本网同意其意见,如有任何问题请与本网联系。"跑跑卡丁车怎样窗口化"相关的详细问题如下:
要修改文件是一个游戏程序的DLL,这个游戏的方式有点让人想起来,那个《剑侠情缘》也是这样的风格,还有《大话西游》也是这样的风格,什么风格呢?很简单的,就是主程序在DLL中,而EXE只是负责加载而已! 觉得发这样的贴有点没水平了,不过,通常这样的最实用吧:)! 简要说明一下: 游戏主要加速有两类:一是OpenGL,二是DirectX 而现在不知道怎么滴国产游戏都是后着,我们熟悉一下后者: /----------------------------------------------------------------------------------------- 我们看到3D类游戏都要用到的一部分初始化,而熟悉这类编程的都说很简单的东西哦! HRESULT CPNDX::InitD3D(HWND hWd) { hWnd=hWd; // 创建D3D对象 if( NULL == ( g_pD3D = Direct3DCreate8( D3D_SDK_VERSION ) ) ) return E_FAIL; // 获取当前的显示模式 D3DDISPLAYMODE d3 if( FAILED( g_pD3D-&GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &d3ddm ) ) ) return E_FAIL; D3DPRESENT_PARAMETERS d3 ZeroMemory( &d3dpp, sizeof(d3dpp) ); d3dpp.Windowed = TRUE; // 窗口模式 d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; // 设置交换模式 d3dpp.BackBufferWidth = d3ddm.W d3dpp.BackBufferHeight = d3ddm.H d3dpp.BackBufferFormat = d3ddm.F // 设置背景缓冲区格式为当前左面格式 d3dpp.EnableAutoDepthStencil = TRUE; // 打开深度缓冲zbuffer d3dpp.AutoDepthStencilFormat = D3DFMT_D16; // 深度缓冲格式 // 创建D3D设备 // 第一个参数:使用默认的显卡适配器 // 第二个参数:请求使用硬件抽象层(HAL) // 第三个参数:窗口句柄 // 第四个参数:使用软件处理顶点 // 第五个参数:创建的参数 // 第六个参数:创建的D3D设备指针 if( FAILED( g_pD3D-&CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &g_pd3dDevice ) ) ) { return E_FAIL; } // 关闭culling,让我们能看到3角型的正反面 g_pd3dDevice-&SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE ); // 打开ZBUFFER g_pd3dDevice-&SetRenderState( D3DRS_ZENABLE, TRUE ); // Turn off D3D lighting g_pd3dDevice-&SetRenderState( D3DRS_LIGHTING, FALSE ); return S_OK; } /--------------------------------------------------------------------------------------------------- 我们注意的地方是:GetAdapterDisplayMode这个函数全屏幕一般不需要,一般都是枚举 而窗口化是必须要的,如果不要这个函数也可以,那就必须自己初始化D3DDISPLAYMODE结构才可以。 比如: //前面用其他函数给它初始化了宽和高,那么后面还要初始化屏幕格式和刷新频率。才能窗口化! d3ddm.Format =D3DFMT_R5G6B5; d3ddm.RefreshRate=0x3C; 把前面的D3DPRESENT_PARAMETERS d3dpp这个结构赋值修改如下: d3dpp.Windowed = FALSE; d3dpp.BackBufferCount = 1; d3dpp.BackBufferFormat = d3ddm.F d3dpp.BackBufferWidth = d3ddm.W d3dpp.BackBufferHeight = d3ddm.H d3dpp.hDeviceWindow = hW d3dpp.SwapEffect = D3DSWAPEFFECT_COPY_VSYNC; //这个也是必须的,不然屏幕会闪烁。 d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT; d3dpp.FullScreen_PresentationInterval = D3DPRESENT_INTERVAL_ONE; 简要说完了,大家还是不太清楚就查查资料吧!没说太难,就通俗点说一下! /---------------------------------------------------------------------------------------------------- 下面的就简单了: 我们来看一下,把一个程序反汇编会是什么样子: //很容易就发现这个了: 00406FD0 |. 68 DC000000 push 0DC 00406FD5 |. E8 987F0300 call &jmp.&d3d8.Direct3DCreate8& ============================== g_pD3D = Direct3DCreate8( D3D_SDK_VERSION ); //也就是这一句了 /----------------------------------------------------------------- //再往下就看到了这两句: 0040709D |& C745 F8 17000&mov dword ptr [ebp-8], 17 |. C745 F4 3C000&mov dword ptr [ebp-C], 3C ================================== d3ddm.Format =D3DFMT_R5G6B5; d3ddm.RefreshRate=0x3C; /------------------------------------------------------------------ //再往下看就到了一个结构,关建的是这个结构: 004070BB |. C745 D4 01000&mov dword ptr [ebp-2C], 1 |. C745 C4 01000&mov dword ptr [ebp-3C], 1 |. 8B55 F8 mov edx, dword ptr [ebp-8] 004070CC |. 8955 C0 mov dword ptr [ebp-40], edx 004070CF |. 8B45 EC mov eax, dword ptr [ebp-14] |. 8945 B8 mov dword ptr [ebp-48], eax |. 8B4D F0 mov ecx, dword ptr [ebp-10] |. 894D BC mov dword ptr [ebp-44], ecx 004070DB |. 8B55 08 mov edx, dword ptr [ebp+8] 004070DE |. 8955 D0 mov dword ptr [ebp-30], edx |. C745 CC 04000&mov dword ptr [ebp-34], 4 |. C745 E4 00000&mov dword ptr [ebp-1C], 0 004070EF |. C745 E8 00000&mov dword ptr [ebp-18], 0 /------------------------------------------------------------------------------------------------ //再往下我们认识一个函数: |. 6A 47 push 47 004070FA |. 6A 01 push 1 004070FC |. 6A 02 push 2 004070FE |. 8B45 F8 mov eax, dword ptr [ebp-8] |. 50 push eax |. 6A 01 push 1 |. 6A 00 push 0 |. 8B4D FC mov ecx, dword ptr [ebp-4] |. 8B51 04 mov edx, dword ptr [ecx+4] 0040710C |. 8B45 FC mov eax, dword ptr [ebp-4] 0040710F |. 8B48 04 mov ecx, dword ptr [eax+4] |. 8B01 mov eax, dword ptr [ecx] |. 52 push edx |. FF50 28 call dword ptr [eax+28] ============================================================= m_pD3D-&CheckDeviceFormat(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, d3ddm.Format, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, D3DFMT_D32) /--------------------------------------------------------------------------------------------------- //还有一个关键函数: |. 50 push eax |. 8D4D B8 lea ecx, dword ptr [ebp-48] |. 51 push ecx |. 6A 20 push 20 004071FA |. 8B55 08 mov edx, dword ptr [ebp+8] 004071FD |. 52 push edx 004071FE |. 6A 01 push 1 |. 6A 00 push 0 |. 8B45 FC mov eax, dword ptr [ebp-4] |. 8B48 04 mov ecx, dword ptr [eax+4] |. 8B55 FC mov edx, dword ptr [ebp-4] 0040720B |. 8B42 04 mov eax, dword ptr [edx+4] 0040720E |. 8B10 mov edx, dword ptr [eax] |. 51 push ecx |. FF52 3C call dword ptr [edx+3C] =============================================================== //Create a Direct3D device. if(FAILED(m_pD3D-&CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &m_pD3DDevice))) /---------------------------------------------------------------------------------------------------- 窗口化的结束了---------------
||||点击排行