Du bist nicht angemeldet.

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

1

31.12.2011, 19:32

Wavefront ohne Indexbuffer?

Hi Leute, ich stelle mir jetzt schon ständig die Frage wie es möglich ist eine Wavefrontdatei ohne den Indexbuffer zu rendern? Alle Quellen (Bücher, Tutorials) die ich auftreiben konnte nutzten eben keinen. Ich weiss wohl, dass die Indexinformationen vorhanden sind aber hier bin ich dann auch schon am Ende meines Wissens ^^
Wäre nett wenn sich einer die Zeit nehmen würde mich zu erleuchten, denn mein English reicht wie es aussieht nicht um alles zu verstehen.

mfg master_kenshin

btw Happy new year

Moe

Frischling

Beiträge: 85

Wohnort: München

  • Private Nachricht senden

2

01.01.2012, 16:00

Hi,
in der Datei sind aber schon die Indexdaten gespeichert, oder? Dann musst Du die Daten von oben nach unten parsen. Beim parsen musst Du Dir je ein Array für die Positionen, Texturkoordinaten und die Normalen anlegen und füllen (wenn Du nicht weißt, wie lange dir Liste ist, brauchst Du je nach Programmiersprache eine andere Datenstruktur als ein Array). Wenn Du bei den Indices bist, kannst Du mit den gespeicherten Vertexdaten ein neuen Container erstellen und anhand der Indexdaten für jedes Vertex die Position, Normale und Texturkoordinate speichern. Meistens ist es dann noch sinnvoll, das Material zu speichern. (Du kannst natürlich auch ein großes Objekt erstellen, wegen den Materialien lohnt es sich oft, kleinere Objekte zu bauen)
Bei den Indices bekommst Du Ganzzahlen, die jeweils der Index für Position, Normale und Texturkoordinate (die Reihenfolge weiß ich nicht auswendig, sorry) sind.
Mit dem Indexbuffer ist in der Regel der Speicherverbrauch niedriger als ohne.

Im englischen Wikipedia ist der Artikel auch ganz brauchbar zu den Wavefront-Dateien.

Ciao

3

01.01.2012, 23:17

Vielen Dank für die Aufklärung :)

Zitat

Wenn Du bei den Indices bist, kannst Du mit den gespeicherten Vertexdaten ein neuen Container erstellen und anhand der Indexdaten für jedes Vertex die Position, Normale und Texturkoordinate speichern.
Bis hierhin hab ich alles verstanden, jedoch weiss ich leider nicht genau wie ich die Indexdaten dann ohne Indexbuffer verwenden soll. Einfach mit Hilfe der Indizes dei Reihenfolge der Vertices in einem Algorithmus "ändern"?
Da du aber sagst, mit Indexbuffer sei der Speicherverbrauch geringer, wäre es doch wohl nur Zeitverschwendung einen Weg zu finden um ohne Indexbuffer zu rendern. Also einfach wie gewohnt ein Array erstellen indem die Indizes gespeichert werden und auf den guten alten Indexbuffer zurückgreifen?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

01.01.2012, 23:28

Na überleg mal wie du normalerweise so renderst wenn du keinen IndexBuffer verwendest...

5

01.01.2012, 23:49

Meine Erfahrung reicht leider bloss bis zu einem im Quellcode generierten Würfel. Alles andere wurde bisher hiermit

C-/C++-Quelltext

1
pd3dImmediateContext->Draw(numVertices, 0);
erledigt.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

01.01.2012, 23:55

Naja, also machst du einen VertexBuffer voll mit deinen Vertices in einer dem Primitive Type entsprechenden Reihenfolge!?

7

02.01.2012, 00:08

Nehmen wir zum Beispiel ein Quadrat, also 4 vertices. Der Indexbuffer würde dann so aussehen: 1,4,3,2. Und das ist dann wohl auch die Reihenfolge. Sollte ich recht haben hat sich mein Problem dann wohl erledigt.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

02.01.2012, 00:15

Klingt in Ordnung (falls du die obj Indices meinst, Indices in nem IndexBuffer starten bei 0), aber ich dachte du verwendest keinen IndexBuffer!?

9

02.01.2012, 00:20

Tue ich auch nicht sry. Mit Indexbuffer meinte ich die Indexinformationen die in der Datei gespeichert sind, welche ich anstelle eines Indexbuffers verwende um meine Vertexstruktur in der richtigen Reihenfolge zu füllen.

Vielen Dank für den Tipp

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

02.01.2012, 00:26

Ok. Offenbar ist dir klar wofür die Indices im obj stehen!? Dann ist mir jetzt aber etwas unklar wo genau dein Problem nun liegt.

Werbeanzeige