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
Quellcode |
|
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 |
// Hier erstmal das Speicher der Vertizes, es läuft alles ohne Fehler ab: tbResult CPlatte::CreateVertizes() { SVertexPlatte* Vertizes = new SVertexPlatte[8]; Vertizes[0].vPos = tbVector3(0.0f, 0.0f, 0.0f); // vorne unten links Vertizes[0].vTex = tbVector2(0.0f, 1.0f); Vertizes[1].vPos = tbVector3(1.0f, 0.0f, 0.0f); // vorne unten rechts Vertizes[1].vTex = tbVector2(1.0f, 1.0f); Vertizes[2].vPos = tbVector3(0.0f, 1.0f, 0.0f); // vorne oben links Vertizes[2].vTex = tbVector2(0.0f, 0.0f); Vertizes[3].vPos = tbVector3(1.0f, 1.0f, 0.0f); // vorne oben rechts Vertizes[3].vTex = tbVector2(1.0f, 1.0f); Vertizes[4].vPos = tbVector3(0.0f, 0.0f, 1.0f); // hinten unten links Vertizes[4].vTex = tbVector2(0.0f, 1.0f); Vertizes[5].vPos = tbVector3(1.0f, 0.0f, 1.0f); // hinten unten rechts Vertizes[5].vTex = tbVector2(1.0f, 1.0f); Vertizes[6].vPos = tbVector3(0.0f, 1.0f, 1.0f); // hinten oben links Vertizes[6].vTex = tbVector2(0.0f, 0.0f); Vertizes[7].vPos = tbVector3(1.0f, 1.0f, 1.0f); // hinten oben rechts Vertizes[7].vTex = tbVector2(1.0f, 0.0f); if(m_Vertizes->AddVertices(8, Vertizes)) // Daten spiechern TB_ERROR("Vertexbuffer konnte nicht mit Daten gefüllt werden!", TB_ERROR) else TB_INFO("VertexBuffer erfolgreich mit Daten gefüllt!"); if(m_Vertizes->Update()) // Daten in Buffer kopieren TB_ERROR("Vertexbuffer-Update fehlgschlagen!", TB_ERROR); delete [] Vertizes; // Array wird nicht mehr gebraucht, also löschen short int Indizes[36] = { 2, 3, 0, 3, 1, 0, // Vorderseite 7, 6, 4, 7, 5, 4, // Hinterseite 3, 7, 1, 7, 5, 1, // rechte Seite 6, 2, 4, 2, 0, 4, // linke Seite 0, 1, 4, 1, 5, 4, // untere Seite 6, 7, 2, 7, 3, 2 }; // obere Seite if(m_Indizes->SetIndices(0, 36, Indizes)) TB_ERROR("SetIndizes ist Fehlgeschlagen!", TB_ERROR) else TB_INFO("IndexBuffer erfolgreich mit Daten gefüllt!"); return TB_OK; // Alles in Ordnung... } // Diese Funktion wird auf aufgerufen beim Rendern: tbResult CTsichTennis::Render(float fNumSecPassed) { tbDirect3D::Clear(NULL, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(255,0,0), 1.0f, 0 ); tbDirect3D::BeginScene(); m_Platte->Render(fPassedSecs); tbDirect3D::EndScene(); tbDirect3D::Present(); } // dAnn hier die Render-Funktion: tbResult CPlatte::Render(float fSecs) { tbMatrix mTranslation = tbMatrixTranslation(tbVector3(0.0f, 0.0f, 2.0f)); tbDirect3D::SetFVF(VERTEX_PLATTE_FVF); // FVF=D3DFVF_XYZ | D3DFVF_TEX1 tbDirect3D::SetTexture(0, m_Textur); // m_Textur ist erfolgreich geladen worden tbDirect3D::SetTransform(D3DTS_WORLD, mTranslation); // m_Vertizes ist erfolgreih erstelltes tbVertexBuffer-Objekt HRESULT r = tbDirect3D::GetDevice()->SetStreamSource(0, m_Vertizes->GetVB(), 0, sizeof(SVertexPlatte)); if(FAILED(r)) TB_ERROR_DIRECTX("SetSTreamSource", r, TB_STOP); // m_Indizes ist erfolgreich erstelltes tbIndexBuffer-Objekt r = tbDirect3D::GetDevice()->SetIndices(m_Indizes->GetIB()); if(FAILED(r)) TB_ERROR_DIRECTX("SetIndizes", r, TB_STOP); r = tbDirect3D::GetDevice()->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 36, 0, 8); if(FAILED(r)) TB_ERROR_DIRECTX("DrawIndexePrimitive", r, TB_STOP); return TB_OK; // Auch hier ist alles oK } |
Administrator
Administrator
Quellcode |
|
1 2 3 4 5 6 7 8 |
#define PLATTE_VERTEX_FVF (D3DFVF_XYZ | D3DFVF_TEX1) // die Struktur SVertexPlatte sieht so aus: struct SVertexPlatte { tbVector3 vPos; tbVector2 vTex; }; |
Administrator
Administrator
Werbeanzeige