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
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Problem ist, dass das Zeichnen dieser VertexBuffer total langsam ist, erstaunlicherweise viel langsamer als Würfel für Würfel.
Nein, bei der Generierung des Gitters mit 4 x 4 Chunks (Ein Chunk = 16 x 16 x 128 Würfel) wird der VertexBuffer gefüllt (jede Instanz der Struktur SChunk hat einen VertexBuffer).Dann machst du irgendwas falsch. Werden die Buffer in jedem Frame dynamisch befüllt?
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 |
//... #define VERTS_PER_CHUNK CHUNK_SIZEXZ*CHUNK_SIZEXZ*CHUNK_SIZEY*6*6 //... //Vertices erstellen MGVertex::PositionTextured *verts = new MGVertex::PositionTextured[VERTS_PER_CHUNK]; ZeroMemory(verts, VERTS_PER_CHUNK); pch->VBuffer.CreateBuffer(m_MGraphics->GetDevice(), VERTS_PER_CHUNK, D3DFVF_XYZ | D3DFVF_TEX1, sizeof(MGVertex::PositionTextured)); //... //Hier ein Beispiel des Ausschließens der Seite (wenn Seite ausgeschlossen wird, wird der Buffer hier nicht beschrieben) //Obere Seite if(y == 0 || (y != 0 && pch->ChunkArray[x][z][y-1] == 0)) { verts[0+c*36] = MGVertex::PositionTextured(...); verts[1+c*36] = MGVertex::PositionTextured(...); verts[2+c*36] = MGVertex::PositionTextured(...); verts[3+c*36] = MGVertex::PositionTextured(...); verts[4+c*36] = MGVertex::PositionTextured(...); verts[5+c*36] = MGVertex::PositionTextured(...); } //... pch->VBuffer.SetData(VERTS_PER_CHUNK, verts); //Anzahl Vertices, Buffer delete[] verts; |
C-/C++-Quelltext |
|
1 2 3 4 5 |
//... m_MGraphics.GetDevice()->SetTexture(0, m_pDirt); //device, num primitives, primitivetype chunk->VBuffer.Render(m_MGraphics.GetDevice(), (UINT)chunk->VBuffer.GetNumVertices()/3, D3DPT_TRIANGLELIST); //... |
Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von »Kippstrahl« (24.04.2011, 13:09)
Zitat
Basically, there are only 10 types of people in the world. Those who know binary, and those who don't.
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »dot« (24.04.2011, 13:49)
Soweit ich weiß geht pro VBO nur eine Textur. Du müsstest daher eine Textur haben die alle möglichen Würfel-Texturen beinhaltet und dort mit TexCoords arbeiten. Die Koordinaten müsstest du ja nur am Anfang einmal berechnen und mit im VBO speichern.
Soweit ich weiß geht pro VBO nur eine Textur. Du müsstest daher eine Textur haben die alle möglichen Würfel-Texturen beinhaltet und dort mit TexCoords arbeiten. Die Koordinaten müsstest du ja nur am Anfang einmal berechnen und mit im VBO speichern.
Werbeanzeige