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.cpp74MeshClassを指している必要があります
それが何を意味するのかは知っていますが、それを避ける方法がわかりません。ポインタに問題があるようです。また、私は次のようにPDevを使用しようとしました:
*PDev->SetTransform( D3DTS_PROJECTION, &matProj ); // ???
その関数で参照を使用してd3dDeviceを使用する必要はないことはわかっていますが、関数Cleanupもあります。コピーではなく実際のデバイス自体をクリーンアップする必要があるため、参照する必要があると思います8)。私は自分自身を正しく説明したと思います。あなたが私を助けることができればそれは恐ろしいでしょう。お時間を割いていただきありがとうございます...