|
|
我的游戏用了SDK9里的d3dapp.h d3dapp.cpp等几个文件,就是用了它的框架..
(以前是DX8的,用DX8的时候没会出现任何问题,但改为DX9后,虽然能编译通过,但也问题来了)
主程序函数首先进入这个函数 创建3D对象
HRESULT CD3DApplication::Create( HINSTANCE hInstance )
{
HRESULT hr;
// Create the Direct3D object
m_pD3D = Direct3DCreate9( D3D_SDK_VERSION );
if( m_pD3D == NULL )
return DisplayErrorMsg( D3DAPPERR_NODIRECT3D, MSGERR_APPMUSTEXIT );
........
}
第一个奇怪的问题出现了 m_pD3D == 0X000000 但是 m_pD3D != NULL 也是说
不执行return DisplayErrorMsg( D3DAPPERR_NODIRECT3D, MSGERR_APPMUSTEXIT );
第二个问题出现了, 程序却还能运行而不出错
继续运行程序..
时候执行完这行代码
m_d3dpp.EnableAutoDepthStencil = m_d3dEnumeration.AppUsesDepthBuffer;
然后m_d3dpp.EnableAutoDepthStencil的值 = FALSE;
也就是说深度缓冲不可用..
继续执行...
程序一直不出错
进入游戏画面, 虽然设置了ZENABLE Z缓冲,但没有任何效果....也就是说m_d3dpp.EnableAutoDepthStencil=FALSE
而其它渲染(比如透明效果)是正常的..
我的电脑运行其他3D程序的时候不会出现这种情况,机器也能正常跑魔兽世界这样的3D游戏..
搞了很久都没找出原因....
.........
现在真的很急呀..
我的QQ是65320950 谢谢..
|
|