JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=2226779bc8950af37bcbbc3feff2faddMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Anordnung der Vertexe in einem Vertexbuffer eines Meshs...

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 01.01.2003, 19:55    Titel: Anordnung der Vertexe in einem Vertexbuffer eines Meshs... Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jörg
JLI MVP
JLI MVP



Anmeldedatum: 19.07.2002
Beiträge: 182
Wohnort: Siegen/NRW
Medaillen: Keine

BeitragVerfasst am: 01.01.2003, 22:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 02.01.2003, 13:06    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jörg
JLI MVP
JLI MVP



Anmeldedatum: 19.07.2002
Beiträge: 182
Wohnort: Siegen/NRW
Medaillen: Keine

BeitragVerfasst am: 03.01.2003, 11:48    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 03.01.2003, 12:20    Titel: Antworten mit Zitat

Also ich glaub ich mach das mit Clone Mesh FVF
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum