如何通过给定参考(DirectX / C ++ Prgoramming)发送D3D设备

| H1。 我正在尝试将代码分成不同的.cpp和.h文件,以使它们查找,查看和理解起来更加容易。这是我现在要执行的操作:我有一个Meshes.cpp,这是我的主要.cpp源文件。在Render函数(Render())中,我必须调用一个名为SetupMatrices的函数: 这是我的“ d3dGeneral.cpp”文件:
// Begining of the \"d3dGeneral.cpp\"
    #include \"DXUT.h\"

    VOID SetupMatrices( LPDIRECT3DDEVICE9 *PDev )
    {
        D3DXMATRIXA16 matProj;
        D3DXMatrixPerspectiveFovLH( &matProj,
                                    D3DX_PI / 4,
                                    1.777777777777778f,
                                    1.0f,
                                    1000.0f );    
        PDev->SetTransform( D3DTS_PROJECTION, &matProj ); // The problem is here......
    }
//Enging of the \"d3dGeneral.cpp\" 
这是我的\“ Meshes.cpp \”文件:(哪个是主cpp文件)
// Begining of the \"Meshes.cpp\" file.
#include \"DXUT.h\"
#include \"XMesh.h\"
#include \"Camera.h\"
#include \"d3dGeneral.cpp\"

...
...
//Usualy SetupMatrices is found here.
...
...

VOID Render()
{
    SetupMatrices( &g_pd3dDevice );
    ...
    ...
    ...
}
INT WINAPI wWinMain( HINSTANCE hInst, HINSTANCE, LPWSTR, int nCmdShow)
{
    ...
    ...
    ...
    Render();
    ...
    ...
    ...
}
// End of the \"Meshes.cpp\" file
名为DXUT.h的头文件包含其他常规包含。 所以,当我这样做时,我得到一个错误: 错误2错误C2227:\'-> SetTransform \'的左侧必须指向类/结构/联合/通用类型c:\\ users \\ catt \\ desktop \\ deneme \\ d3dgeneral.cpp 74 MeshClass 我知道这是什么意思,但我找不到如何避免的方法。看起来我的指针有问题。我也尝试像这样使用PDev:
*PDev->SetTransform( D3DTS_PROJECTION, &matProj );  // ???
我知道我不必在该函数中使用带有引用的d3dDevice,但是我还有一个Cleanup函数。我认为我需要为此提起诉讼,因为它必须清除真实设备本身,而不是其副本8)。我希望我能正确地解释自己。如果您能帮助我,那将是非常糟糕的。感谢您抽出宝贵的时间...     
已邀请:
        您是否尝试过:
(*PDev)->SetTransform( D3DTS_PROJECTION, &matProj ); 
    
        
LPDIRECT3D9DEVICE
已经是一个指针。您不需要指向它的指针。取值
LPDIRECT3D9DEVICE
。 当然,我个人更喜欢取ѭ6,因为它更清晰,此外,我喜欢将原始指针存储在智能指针中。     

要回复问题请先登录注册