H1。 我正在尝试将我的代码转换为不同的 .cpp 和 .h 文件,以便查找,查看和理解更轻松。以下是我现在要做的事情:我得到了一个 Meshes.cpp ,这是我的主要 .cpp 源文件。在渲染功能(渲染())中,我必须调用名为 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'必须指向类/ struct / union / generic类型c:\ users \ catt \ desktop \ deneme \ d3dgeneral.cpp 74 MeshClass
我知道这意味着什么,但我找不到如何避免它。看起来我的指针有问题。我还试着像这样使用PDev:
*PDev->SetTransform( D3DTS_PROJECTION, &matProj ); // ???
我知道我不必在该函数中使用带引用的d3dDevice,但我还有一个函数清理。我想我需要为它提供参考,因为它必须清理真正的设备本身而不是它的副本8)。我希望我能正确解释自己。如果你可以帮助我那将是非常棒的。谢谢你抽出时间......
答案 0 :(得分:3)
你试过这个:
(*PDev)->SetTransform( D3DTS_PROJECTION, &matProj );
答案 1 :(得分:2)
LPDIRECT3D9DEVICE
已经指针。你不需要指向它的指针。只需按值LPDIRECT3D9DEVICE
。
当然,我个人更喜欢使用IDirect3D9Device*
,因为它更清晰,此外,我喜欢将原始指针存储在智能指针中。