|
|
代码如下:
//我们将通过该接口指针访问Mesh对象的材质和纹理
LPD3DXBUFFER pD3DXMtrlBuffer;
//从.x文件创建Mesh对象
: 3DXLoadMeshFromX(
m_pFileName, D3DXMESH_SYSTEMMEM, m_pDevice,
NULL, &pD3DXMtrlBuffer, NULL,
&m_dwNumSubsets, //返回模型中子集的数目
&m_pMesh ); //返回Mesh对象的接口指针
m_pMeshMaterials = new D3DMATERIAL9[m_dwNumSubsets];
m_pMeshTextures = new LPDIRECT3DTEXTURE9[m_dwNumSubsets];
//从接口指针pD3DXMtrlBuffer获得各个子集的材质和纹理图片的文件名
D3DXMATERIAL* d3dxMaterials = (D3DXMATERIAL*)pD3DXMtrlBuffer->GetBufferPointer();
for( DWORD i=0; i < m_dwNumSubsets; i++ )
{
//复制子集的材质
m_pMeshMaterials = d3dxMaterials.MatD3D;
//Direct3D在调入Mesh模型时,没有设置材质的环境光颜色,
//这里把它设置成和漫反射一样的颜色。
m_pMeshMaterials.Ambient = m_pMeshMaterials.Diffuse;
//调入纹理图片,这里出错!!!!!!!
::D3DXCreateTextureFromFile(
m_pDevice,
d3dxMaterials.pTextureFilename, //纹理图片的文件名
&m_pMeshTextures );
}
pD3DXMtrlBuffer->Release(); //释放接口
当我用unicode编译的时候,出现error C2664: “D3DXCreateTextureFromFileW” : 不能将参数 2 从“LPSTR”转换为“LPCWSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
难道不支持unicode么?d3dx9mesh.h也没有关于unicode的定义,郁闷啊,谁告诉我怎么办啊! [em4] [em4] [em4] |
|