|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 01.01.2003, 19:55 Titel: Anordnung der Vertexe in einem Vertexbuffer eines Meshs... |
|
|
Hi!
Mir ist keine bessere Überschrift eingefallen. Mein Problem liegt da:
Ich will in meiner Engine BSP-Trees verwenden. Dazu braucht man ja Polygone. Ich hab mir also ne Polygonstruktur geschrieben. Ich habe jetzt folgendes vor:
- X-File laden
- Den Vertexbuffer des Meshs holen
- Die Vertexe aus dem Vertexbuffer in Polygone verwandeln
Dazu muss ich wissen, ob die vertexe in dem Vertexbuffer so angeordnet sind dass Vertex 1,2,3 ein Dreieck bilden, und die Vertexe 2,3,4 auch ein, oder wie die überhaupt angeordnet sind! Gibt es eine Einheitliche "Ordnung" bei solchen VB´s, oder sind die von Buffer zu Buffer verschieden? Wenn sie verschieden sind: Gibts ne Möglichkeit herauszufinden, wie die Vertexe im Buffer "angeordnet sind" ?
Hoffe ihr könnt mir helfen!
VH |
|
Nach oben |
|
|
Jörg JLI MVP
Anmeldedatum: 19.07.2002 Beiträge: 182 Wohnort: Siegen/NRW Medaillen: Keine
|
Verfasst am: 01.01.2003, 22:38 Titel: |
|
|
Das kommt darauf an, ob fuer den Vertexbuffer ein Indexbuffer existiert. Wenn ja, dann sind die ersten 3 Elemente im IB die Indices der drei Vertices im VB, die das erste Dreieck bilden. Element 4, 5 und 6 sechs sind dementsprechend die Indices des zweiten Dreieck im VB.
Code: |
//Dreieck 1:
Vertices[Indices[0]];
Vertices[Indices[1]];
Vertices[Indices[2]];
//Dreieck 2:
Vertices[Indices[3]];
Vertices[Indices[4]];
Vertices[Indices[5]];
|
Gibt es keinen Indexbuffer, dann sind die ersten drei Vertices im VB das erste Dreieck usw.
Code: |
//Dreieck 1:
Vertices[0];
Vertices[1];
Vertices[2];
//Dreieck 2:
Vertices[3];
Vertices[4];
Vertices[5];
|
Wenn du ein Mesh aus nem x-file lädst, existiert in der Regel auch immer ein Indexbuffer. Desweiteren musst du wissen, ob dein Mesh aus einer Trianglelist, einem Trianglestrip oder einem Trianglefan besteht. Die oben beschriebenen Regeln gelten nur fuer die Trianglelist, aus der X-Files aber eigentlich auch immer bestehen.
Jörg _________________ www.messiahzone.de.vu |
|
Nach oben |
|
|
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 02.01.2003, 13:06 Titel: |
|
|
thx
Jetzt hab ich noch ne Frage zu der Polygon Struktur. Die Vertices aus dem Buffer können ja von Buffer zu Buffer verschiedene Formate haben. Wie ich an die Formate Rankomme, weiß ich. Da ein Polygon ja hauptsächlich aus Vertexen besteht, müssen diese ja in der Struktur vorhanden sein. ich hab bisher einen LPVOID Zeiger dafür verwendet. Aber zu meiner Frage: Ich kann ja die Vertexe auf folgende Weiße in dem Zeiger Speichern:
Code: |
lpZeiger = new sVertexStruktur[ dwNumberOfVertices ];
lpZeiger[ 0 ] = (LPVOID)VertexBuffer[ 0 ];
lpZeiger[ 1 ] = (LPVOID)VertexBuffer[ 1 ];
...
|
Das macht man natürlich mit ner Schleife, is jetzt aber egal...
Mein Prob: Ich hab ja jetzt das Vertex Format, wie komm ich aber an die Struktur ran?
Muss ich selber vorher ein paar Strukturen schreiben und je nach Vertex Format ein davon verwendden, oder geht das einfacher? |
|
Nach oben |
|
|
Jörg JLI MVP
Anmeldedatum: 19.07.2002 Beiträge: 182 Wohnort: Siegen/NRW Medaillen: Keine
|
Verfasst am: 03.01.2003, 11:48 Titel: |
|
|
Eine andere Möglichkeit, als das Format durch Ausprobieren herauszubekommen und dann hart zu kodieren fällt mir im Moment nicht ein. Also so:
Code: |
DWORD dwFVF=pMesh->GetFVF();
if (dwFVF & D3DFVF_XYZ)
{
//hat xyz koordinaten
}
if (dwFVF & D3DFVF_XYZRHW)
{
//..
}
..
|
Das kannste mim Debugger durchsteppen und dir die entsprechenden eigenschaften merken, die die Vertexstruktur hat und diese dann hinterher bauen.
Falls du ID3DXMesh verwendest, kannst du auch du das Modell auch mit CloneMeshFVF() klonen und ein Vertexformat für den Klon angeben (obwohl es ja dann eigentlich kein richtiger Klon ist, wenn der ein anderes Vertexformat hat...). _________________ www.messiahzone.de.vu |
|
Nach oben |
|
|
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 03.01.2003, 12:20 Titel: |
|
|
Also ich glaub ich mach das mit Clone Mesh FVF |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|