Einzelnen Beitrag anzeigen

OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#11

Re: DirectX Vertex Darstellung

  Alt 4. Sep 2003, 18:43
OK, ich erkläre es nochmal ganz langsam. Sozusagen zum Mitschreiben (aber es ist ja schon Text (c; ).

Du hast ein Array. In dem hältst du die Informationen über deine Sterne, also in deinem Fall X, Y und Farbe. In jedem Frame änderst du in diesem Array deine Sterne und nirgendwo sonst.

Wenn du jetzt renderst, erzeugst du für jeden Stern eine Transformationsmatrix und zusätzlich eine Texturtransformationsmatrix. Diese teilst du Direct3D mit. Dann sagst du Direct3D, es möge deinen Vertexbuffer zeichnen, in dem sich immer noch nur ein Rechteck mit Textur befindet. Die Matrizen erledigen alles übrige.
Pseudo-Code zum Rendern:
Code:
for (int i = 0; i < nStarCount; i++)
{
  D3DXMATRIX matTrans;
  D3DXMatrixTranslation(&matTrans, Stern[i].x, Stern[i].y, 0);
  m_pDevice->SetTransform(D3DTS_WORLDMATRIX, &matTrans);
  m_pDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
}
Vorher musst du natürlich deinen Vertexbuffer als StreamSource gesetzt haben, und auch das FVF muss gesetzt sein. Es bleibt bei EINEM Vertexbuffer mit EINEM Rechteck. Ebenso muss die Textur und die Color Operation etc. geladen und gesetzt sein, aber eben auch nur EINMAL. Vielleicht musst du dir klarmachen, dass deine Sterne etwas mit deiner Physik selbst zu tun haben, der Vertexbuffer hingegen NUR fürs Rendern gedacht ist.

---

Wenn es dir nur um eine Textanzeige geht, solltest du dir ID3DXFont angucken, das ist voll hardwarebeschleunigte Textanzeige.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat