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

  • »Wümpftlbrümpftl« ist der Autor dieses Themas

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

1

15.05.2006, 20:07

kleinsten Index aus XMesh mit D3DX

Hi,

ich schreibe mir derzeit eine Klasse, die mithilfe der D3DX-Bibo ein X-Modell lädt und alle Materialien, den Vertex- u. IndexBuffer, Texturen (...) ausließt und alles mit der TB und einigen eigenen Strukturen abspeichert (also ich verwende tbVertexBuffer den TextureManager ....), dass ich dannach direkten Zugriff auf alle Informationen habe.
Ich komm auch mit allem ziehmlich gut klar. Mein Problem ist jetzt allerdings, dass ich ja pro Material die Anzahl der Dreiecke und Vertizes brauch sowie den ersten Vertex und den kleinsten Index brauch um den "Gültigkeitsbereich des Materials" festzulegen.
Alle Angaben bis auf den kleinsten Index hab ich mit GetAttributeTable aus dem XMesh geladen.

(GetAttributeTable gibt folgende struktur zurück:

Quellcode

1
2
3
4
5
6
7
typedef struct _D3DXATTRIBUTERANGE {
    DWORD AttribId;
    DWORD FaceStart;
    DWORD FaceCount;
    DWORD VertexStart;
    DWORD VertexCount;
} D3DXATTRIBUTERANGE;
)

den Start Index habe ich durch FaceCount*3 ermittelt (stimmt das?).

Nur wie krieg ich jetzt den kleinsten Index?? Ich hab keine Funktion gefunden mit dem ich diesen ermitteln kann.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

15.05.2006, 20:15

Herrje...ich habe das mal in grauer Vorzeit gemacht, aber den Kram habe ich auf dem Notebook und das ist leider ein wenig unpässlich(und das für immer -_- ).

Ich meine mich aber daran erinneren zu können, dass der Startindex 3 * FaceStart war. Die Anzahl der Indices 3 * FaceCount und die Anzahl der zu zeichnenden Dreiecke eben FaceCount. Die anderen Angaben waren glaube ich nur aus Leistungsgründen interessant, wobei der reale Startwert von der Draw Funktion per StartIndex + StartVertex errechnet wird.

Aber alle Angaben ohne Gew(ä/e)hr ;)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

  • »Wümpftlbrümpftl« ist der Autor dieses Themas

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

3

15.05.2006, 21:18

Oh du hast recht.
Da stehts ja bei IDirect3DDevice9::DrawIndexedPrimitive

Zitat


BaseVertexIndex
Offset from the start of the vertex buffer to the first vertex index. An index of 0 in the index buffer refers to this location in the vertex buffer.
MinIndex
Minimum vertex index for vertices used during this call. This is a zero based index relative to BaseVertexIndex.

:ohoh:

sry dass ich das nicht gleich bemerkt hab und danke für die schnelle antwort
:huhu:

Werbeanzeige