H1。我试图将我的代码分成不同的.cpp和.h文件,以使它们更容易找到、查看和理解。这是我现在要做的事情:我有一个Meshes.cpp,它是我的主要.cpp源文件。在渲染函数(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)。我希望我正确地解释了自己。如果你能帮助我,那就太棒了。感谢您抽出时间...