2 Stimmen

Wie D3D-Gerät durch die Angabe einer Referenz zu senden (DirectX/C++ Prgoramming)

H1. Ich versuche, meine Codes in verschiedene Bereiche zu unterteilen. .cpp y .h Dateien, damit sie leichter zu finden, zu sehen und zu verstehen sind. Hier ist, was ich jetzt zu tun versuche: Ich habe eine Meshes.cpp das ist mein Haupt .cpp Quelldatei. In der Rendering Funktion ( Render() ) Ich muss eine Funktion aufrufen, die den Namen SetupMatrizen :

Dies ist mein " d3dGeneral.cpp Datei":

// 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" 

Und das ist mein " Meshes.cpp "Datei: (Die Haupt-cpp-Datei)

// 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

Die Header-Datei mit dem Namen DXUT.h enthält weitere allgemeine Angaben. Wenn ich dies tue, erhalte ich einen Fehler:

Fehler 2 Fehler C2227: links von '->SetTransform' muss auf class/struct/union/generic type c zeigen: \users\catt\desktop\deneme\d3dgeneral.cpp 74 MeshClass

Ich weiß, was das bedeutet, aber ich kann nicht herausfinden, wie ich es vermeiden kann. Es sieht so aus, als ob ich ein Problem mit Zeigern habe. Außerdem habe ich versucht, PDev so zu verwenden:

*PDev->SetTransform( D3DTS_PROJECTION, &matProj );  // ???

Ich weiß, ich muss nicht d3dDevice mit Referenz in dieser Funktion verwenden, aber ich habe auch eine Funktion Aufräumen . Ich denke, ich muss eine Referenz dafür angeben, denn es muss das echte Gerät selbst reinigen, nicht die Kopie davon 8). Ich hoffe ich habe mich richtig erklärt. Wenn Sie mir helfen können, wäre das großartig. Danke, dass Sie sich die Zeit genommen haben...

3voto

Cem Kalyoncu Punkte 13357

Haben Sie das schon probiert?

(*PDev)->SetTransform( D3DTS_PROJECTION, &matProj );

2voto

Puppy Punkte 141483

LPDIRECT3D9DEVICE es bereits einen Zeiger. Sie brauchen keinen Zeiger auf ihn. Nehmen Sie einfach LPDIRECT3D9DEVICE nach Wert.

Ich persönlich ziehe es natürlich vor, eine IDirect3D9Device* da es übersichtlicher ist, und außerdem möchte ich den ursprünglichen Zeiger in einem intelligenten Zeiger speichern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X