游戏开发论坛

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

关于使用Direct3D调用X-File的问题。

[复制链接]

12

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
发表于 2006-2-5 11:39:00 | 显示全部楼层 |阅读模式
我现在正在学习D3D8编程,下面是一个封装好的加载X-File的函数。
大家请看一下如果要用这个函数加载一个X文件是不是只需要:
hLoadXFile(“要加载的X文件名”);
如果要想在给它加载纹理怎么办啊?

HRESULT hLoadXFile(char *szName)
{
        HRESULT        hResult = S_OK;
        int                i;
        char        szFullPath[256];

        dwNumMaterials = 0;
       
        // 加载几何图形
        if( FAILED( D3DXLoadMeshFromX(
                szName,
                D3DXMESH_SYSTEMMEM,
                pd3dDevice,
                NULL,
                &pD3DXMtrlBuffer,
                &dwNumMaterials,
                &pMesh ) ) ) {
                return(-1);
        }

        D3DXMATERIAL* d3dxMaterials = (D3DXMATERIAL*)pD3DXMtrlBuffer->GetBufferPointer();
        // 收集用于材质和纹理的内存
        pMeshMaterials = new D3DMATERIAL8[dwNumMaterials];
        pMeshTextures = new LPDIRECT3DTEXTURE8[dwNumMaterials];

        // 加载材质和纹理
        for( i = 0; i < (signed)dwNumMaterials ; i++ ) {
                // 复制材质
                pMeshMaterials = d3dxMaterials.MatD3D;
                // 设置用于材质的环境色(D3DX 不使用)
                pMeshMaterials.Ambient = pMeshMaterials.Diffuse;
                sprintf(szFullPath,"3DData//%s",d3dxMaterials.pTextureFilename);
                // 创建纹理
                if( FAILED( D3DXCreateTextureFromFile(
                        pd3dDevice,
                        szFullPath,
                        &pMeshTextures ) ) ) {
                                delete pMeshTextures;
                                pMeshTextures = NULL;
                }
        }
        // 释放材质缓存
        SAFE_RELEASE(pD3DXMtrlBuffer);

        return( hResult );
}

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2006-2-5 12:52:00 | 显示全部楼层

Re:关于使用Direct3D调用X-File的问题。

本身不已经加载了纹理吗?你是想要另外加载?
-----------------------------
// 创建纹理
if( FAILED( D3DXCreateTextureFromFile(
pd3dDevice,
szFullPath,
&pMeshTextures ) ) ) {
delete pMeshTextures;
pMeshTextures = NULL;
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 09:19

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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