Frage

Ich schrieb ein einfaches Programm, eine directX laden .x-Datei Netz. Mein geladenes Bild wird wie dieser .

Aber derjenige, der die MeshViewer Shows ist wie folgt: .

Was soll den 3D-Look zu bekommen getan werden? Welcher Anruf in der DirectX-Bibliothek soll ich machen?

War es hilfreich?

Lösung

Laden Sie die gleiche Datei in den Viewer als in die eigene Anwendung? Denn es sieht tatsächlich wie Sie Normalen nicht in das Netz haben. Wenn Ihr die gleiche Datei wie der Betrachter verwenden, sie in der Netzdatei sollte aber.

Other than that, Ihre Beleuchtung ist unglaublich hell (alle Werte bei 1,0), würde ich die diffusen Werte auf 0,0 eingestellt und versuche, die Umgebungs bis 0,5 Rot Einstellung. Dann zumindest kann man sagen, wenn Ihr Licht arbeitet.

Andere Tipps

Sieht aus wie Sie haben kein Licht gesetzt.

Sie haben die Materialien, die in dem Netz definiert zu laden, und mindestens ein Licht gesetzt.

Wenn Sie ein Licht gesetzt haben, die Rendering-Code, um die festen Pipeline in DirectX 9 sieht wie folgt aus:

// NumMaterials and ShipMaterialshave already been loaded with the call to D3DXLoadMeshFromX
D3DXMATERIAL* ShipMats = (D3DXMATERIAL*) ShipMaterials->GetBufferPointer();
device->SetTexture(0, NULL); // assume a mesh with no texture
for (DWORD i = 0; i < NumMaterials; ++i) 
{
    device->SetMaterial(&ShipMats[i].MatD3D);
    this->pShipMesh->DrawSubset(i);
}

Wenn Sie immer noch etwas nicht sehen, setzen Sie ein Material, das Sie selbst definiert haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top