|
|
我初学3D游戏开发 载入3D模型之后 显示了出来 有立体感 我贴上纹理之后 就变成了2D的平面的 这个是什么原因? 代码如下:
创建
ID3DXBuffer* mtrlBuffer = 0;
D3DXLoadMeshFromX(inFileName.c_str(),D3DXMESH_MANAGED,in_pDevice,NULL,&mtrlBuffer,
0,&m_numMtrls,&m_pMesh);
if(mtrlBuffer != 0 && m_numMtrls != 0)
{
D3DXMATERIAL* mtrls = (D3DXMATERIAL*)mtrlBuffer->GetBufferPointer();
for(int i = 0; i < m_numMtrls;i++)
{
mtrls.MatD3D.Ambient = mtrls.MatD3D.Diffuse;
m_pMtrls.push_back(mtrls.MatD3D);
if(mtrls.pTextureFilename != 0)
{
IDirect3DTexture9* tex = 0;
D3DXCreateTextureFromFile(in_pDevice,"F:\\Programme\\代码\\个人\\Snooker\\data\\pic\\Sphere\\15Ball\\1.dds",&tex);
m_pTextures.push_back(tex);
}
else
m_pTextures.push_back(0);
}
}
m_pMesh->CloneMeshFVF(
m_pMesh->GetOptions(), // 使用与源模型同样的选项
D3DFVF_XYZ | D3DFVF_NORMAL,// 指定克隆的FVF
in_pDevice,
&clone
);
D3DXComputeNormals( clone, NULL );
mtrlBuffer->Release();
渲染:
for(i = 0; i < m_numMtrls;i++)
{
in_pDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );
IDirect3DTexture9* tex = 0;
in_pDevice->SetMaterial(&m_pMtrls);
D3DXCreateTextureFromFile(in_pDevice,"F:\\Programme\\代码\\个人\\Snooker\\data\\pic\\Sphere\\15Ball\\15.dds",&tex);
in_pDevice->SetTexture(0,tex);
clone->DrawSubset(i);
} |
|