不解。D3D开启深度缓冲后,纹理就贴不上了。关闭了才可以贴上?

rainysky251 2009-06-14 11:26:39

if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
return E_FAIL;
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );

d3dpp.BackBufferWidth = 600;
d3dpp.BackBufferHeight = 600;
d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8;
d3dpp.BackBufferCount = 1;
d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;
d3dpp.MultiSampleQuality = 0;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.hDeviceWindow = hWnd;
d3dpp.Windowed = true;
//d3dpp.EnableAutoDepthStencil = true;
//d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8;
d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &g_pd3dDevice ) ) )
{return E_FAIL;}

g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE );

g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, true); //开启Alpha通道
g_pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
g_pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

g_pd3dDevice->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_POINT);

D3DXVECTOR3 vEyePt( 0.0f, 0.0f, -1.0f ); //摄像机的位置
D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f ); //在世界中的被观察点的位置
D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f ); //上向量,通常(0,1,0)
D3DXMATRIX matView; // 定义一个矩阵
D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );
g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );//设置观察变换

D3DXMATRIX proj;
D3DXMatrixPerspectiveFovLH(
&proj,
/*0,//*/D3DX_PI * 0.5f, // 90 - degree
(float)600 / (float)600,
1.0f,
1000.0f);
g_pd3dDevice->SetTransform(D3DTS_PROJECTION, &proj);



如果把注释的两行
//d3dpp.EnableAutoDepthStencil = true;
//d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8;
加上,就画不出了,没加上的话可以。。

不解,请教论坛里有经验的大大们。。非常感谢!
...全文
62 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainysky251 2009-07-15
  • 打赏
  • 举报
回复
解决了。。是深度缓冲格式不对
rainysky251 2009-06-14
  • 打赏
  • 举报
回复
补充一下,
顶点格式:
D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1

顶点结构:
struct hgeVertex
{
hgeVertex(){}
hgeVertex(float x, float y, float z, DWORD col, float tx, float ty):x(x), y(y), z(z), col(col), tx(tx), ty(ty){}
float x; // screen position
float y;
float z;
DWORD col; // color
float tx; // texture coordinates(uv)
float ty;
};

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧