游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1666|回复: 1

请教一个关于.X文件纹理读取的问题

[复制链接]

83

主题

169

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2008-2-5 19:58:00 | 显示全部楼层 |阅读模式

从.x文件中读取纹理的处理如下:

D3DXMATERIAL* pD3DXMaterial=(D3DXMATERIAL*)m_pMaterialBuffer->GetBufferPointer();
if(pD3DXMaterial!=NULL){
m_pD3DMaterialArray=new D3DMATERIAL9[m_dwMaterials];
m_ppDirect3DTextureArray=new IDirect3DTexture9*[m_dwMaterials];
for(DWORD i=0;i<m_dwMaterials;i++)
{
       m_pD3DMaterialArray=pD3DXMaterial.MatD3D;
       if(pD3DXMaterial.pTextureFilename!=NULL)
              {
                     if(FAILED(D3DXCreateTextureFromFile(m_pIDirect3DDevice,
                                (LPCWSTR)(pD3DXMaterial.pTextureFilename),
                                &m_ppDirect3DTextureArray)))
                                  {
                                         m_ppDirect3DTextureArray=NULL;
                                  }
               }   
}      

pD3DXMaterial.pTextureFilename是一个LPWSTR,但是D3DXCreateTextureFromFile()函数的第二个参数是一个LPCWSTR。如果象我上边的代码一样,强制转换为LPCWSTR,那么D3DXCreateTextureFromFile()函数的第二个参数接收的值就是乱码。
这样的问题该怎样解决?

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
发表于 2008-2-5 21:31:00 | 显示全部楼层

Re:请教一个关于.X文件纹理读取的问题

那里的文件名先转换成宽字符类型就可以了
IDirect3DTexture9* tempTex;
WCHAR wszBuf[128];
MultiByteToWideChar (CP_ACP, 0, tempMtrl.pTextureFilename,
-1, wszBuf, 128);//用这个函数进行ASII类型到宽字符类型的转换
wszBuf[127] = L'\0';
D3DXCreateTextureFromFile (
Device, wszBuf, &tempTex);//这个名字就可以用了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 01:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表