关于DirectX 8.0 转为DirectX 9.0环境下编译的问题

来源:互联网 发布:淘客微信公众号cms系统 编辑:程序博客网 时间:2024/05/16 06:42

我也是一个初学者,在学习DirectX 的时候。问题出了好多。因为我用的是 DirectX 9.0C的环境下写程序,可是在网上找了好多代码都是在DirectX 8.0的环境下开发的,拿DirectX 8.0下的代码来运行,那肯定是出错的。我于是在网上找原因。我本来想这个问题在网上找应该会有答案的吧,没有想到。找了大半天。找出一个结论“如果想在DirectX 9.0下想运行DirectX 8.0的程序,那会出错。唯一的办法是用DirectX 8.0的运行环境”,这个结论在我心里一下子冷了下来。还要我去下一个DirectX 8.0来用。我不想,我只有找出办法来。 

我把DirectX 8.0的一个程序编译了一个,出现fatal error C1083: Cannot open include file: 'd3dx8.h': No such file or directory ,我接着把 

#include <d3d8.h> 

#include <d3dx8.h>

换成了 

#include <d3d9.h>
#include <d3dx9.h> 

再在LINK的地方加入。3dx9.lib d3dxof.lib d3d9.lib winmm.lib dxguid.lib    

把文件里面的8全改成9,再次编译。 

出现如下错误,         error C2660: 'D3DXLoadMeshFromXA' : function does not take 7 parameters  

问题出来了,函数不带7个参数。 

于是我在Dx9.0的文件下找到Documentation这里,打开directx9_c.chm 

然后再里面输入D3DXLoadMeshFromXA 

原型为HRESULT WINAPI D3DXLoadMeshFromX(      

    LPCTSTR pFilename,
    DWORD Options,
    LPDIRECT3DDEVICE9 pD3DDevice,
    LPD3DXBUFFER *ppAdjacency,
    LPD3DXBUFFER *ppMaterials,
    LPD3DXBUFFER *ppEffectInstances,
    DWORD *pNumMaterials,
    LPD3DXMESH *ppMesh
); 

在DX9.0中变成了8个参数,接着读了参数的各个意思。 

我在前面定义了一个 LPD3DXBUFFER  pD3DXBuffer; 

从原来的的

    LPD3DXBUFFER pD3DXMtrlBuffer;
   
    // 读入tiger.x到我们的模型
    if( FAILED( D3DXLoadMeshFromX(
  "Tiger.x",    // [输入].x文件名
  D3DXMESH_SYSTEMMEM,  // [输入]使用系统内存
  g_pd3dDevice,   // [输入]d3d设备指针
  NULL, ,// 不用管
 &pD3DXMtrlBuffer  // [输出]获取模型的材质缓冲
  &g_dwNumMaterials,  // [输出]材质的数量
  &g_pMesh ) ) )   // [输出]模型对象指针
    {
        return E_FAIL;
    }
变成现在的 

 LPD3DXBUFFER pD3DXMtrlBuffer;
   LPD3DXBUFFER  pD3DXBuffer;
    // 读入tiger.x到我们的模型
    if( FAILED( D3DXLoadMeshFromX(
  "Tiger.x",    // [输入].x文件名
  D3DXMESH_SYSTEMMEM,  // [输入]使用系统内存
  g_pd3dDevice,   // [输入]d3d设备指针
  NULL, // 不用管  
 &pD3DXMtrlBuffer, // [输出]获取模型的材质缓冲

&pD3DXBuffer,
  &g_dwNumMaterials,  // [输出]材质的数量
  &g_pMesh ) ) )   // [输出]模型对象指针
    {
        return E_FAIL;
    }
我新加的这个pD3DXBuffer到底是什么意思。我也不懂,真的, 

我只知到他能运行了。如果在以后出现这种情况,我只须加多一个参数就可以运行了。 

可能效率很低,毕竟成功运行了。只能先实现第一步运行成功,如果以后能力提升了, 

再慢慢了解是什么意思吧。 

 

原创粉丝点击