Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
David Mehre
unregistriert
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
// ------------------------------------------------------------------------ // Struktur für einen Box-Vertex struct SBoxVertex { tbVector3 vPosition; // Position des Vertex DWORD dwColor; // Farbe des Vertex }; #define SBoxVertexFVF D3DFVF_XYZ | D3DFVF_DIFFUSE // ------------------------------------------------------------------------ // RenderBox // Zeichnet den Umgebungsquader eines Modells tbResult CGame::RenderBox (tbModel* pModel, tbMatrix mWorld, DWORD dwColor) { tbDirect3D& D3D = tbDirect3D::Instance(); HRESULT hResult; // Koordinaten des Würfels tbVector3 vA, vB, vC, vD, vE, vF, vG, vH; // Vertices SBoxVertex aVertex[8]; // Die Koordinaten A und F sind gegeben vA = pModel->GetBoundingBoxMin(); vF = pModel->GetBoundingBoxMax(); // Alle weiteren Koordinaten berechnen vB.x = vF.x; vB.y = vA.y; vB.z = vA.z; vC.x = vF.x; vC.y = vF.y; vC.z = vA.z; vD.x = vA.x; vD.y = vF.y; vD.z = vA.z; vE.x = vA.x; vE.y = vF.y; vE.z = vF.z; vG.x = vF.x; vG.y = vA.y; vG.z = vF.z; vH.x = vA.x; vH.y = vA.y; vH.z = vF.z; // Positionen in die Vertices eintragen. aVertex[0].vPosition = vA; aVertex[1].vPosition = vB; aVertex[2].vPosition = vC; aVertex[3].vPosition = vD; aVertex[4].vPosition = vE; aVertex[5].vPosition = vF; aVertex[6].vPosition = vG; aVertex[7].vPosition = vH; // Farben eintragen for (int iVertex = 0; iVertex < 8; iVertex++) aVertex[iVertex].dwColor = dwColor; // Indizes eintragen unsigned short ausIndex[24] = { 0, 1, 1, 2, 2, 3, 3, 0, 0, 7, 1, 6, 2, 5, 3, 4, 4, 5, 5, 6, 6, 7, 7, 4 }; // Matrix einsetzen D3D.SetTransform(D3DTS_WORLD, mWorld); // Vertex-Format setzen D3D.SetFVF(SBoxVertexFVF); // Vertex- und Indexbuffer resetten. D3D->SetStreamSource(0, NULL, 0, 0); D3D->SetIndices(NULL); // Nun die Linien zeichnen! if(FAILED(hResult = D3D->DrawIndexedPrimitiveUP(D3DPT_LINELIST, // Linien 0, // Beginn bei 0 8, // Größter Index 12, // Anz. Linien ausIndex, // Indizes D3DFMT_INDEX16, // 16 Bits aVertex, // Vertizes sizeof(SBoxVertex)))) // Vertexgröße { // Fehler beim Zeichnen! TB_ERROR_DIRECTX("D3D->DrawIndexedPrimitiveUP", hResult, TB_ERROR); } return TB_OK; } // ------------------------------------------------------------------------ // Render tbResult CGame::Render (float fTime) { // ... RenderBox(m_pCubeModel, mWorld, tbColor(0.0f, 1.0f, 0.0f)); // ... return TB_OK; } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »David Mehre« (17.10.2011, 18:03)
C-/C++-Quelltext |
|
1 |
for (int iVertex = 0; iVertex < 8; iVertex++) aVertex[iVertex].dwColor = dwColor; |
David Mehre
unregistriert
Zitat von »"drakon"«
Bist du sicher, dass du eine "richtige" Farbe übergibst?
Und bist du sicher, dass die sonstigen Einstellungen korrekt sind? - Ala Licht usw. ?
Werbeanzeige