Direct3D DX9 - array rendern ?
-
Hallo, habe erst begonnen mich mit Direct3D zu beschäftigen (BCB2007 c++).
Ich habe mir einen loader von einem unbekannten format geschrieben und habe nun jeweils die Vertex, Normale und Texture Koordinaten in einem eindimensionalen Array vorliegen. Bei OpenGL konnte ich diese Arrays einfach so verwenden mußte nur mitteilen wieviel werte ich benutze 2,3...
Wie funktioniert das bei Direct3D ? Alle Beispiele die ich irgentwie gesehen habe sind mit konstant geschriebenen arrays im Code selbst.
Danke
-
Ist doch alles genau in der SDK Doku beschrieben (z.B. Tutorial 2). Du erstellst dir eine Vertexstruktur, legst ein Array dieser Struktur an und füllst das Array mit deinen Daten. Das Array kannste dann direkt rendern (schlecht) oder besser in einen Vertex Buffer packen und diesen rendern.
-
ah ok, hatte die tutorials noch nicht gesehen.
dh. also, ich lege eine Struktur an
v1, v2, v2
vn1, vn2, vn2
vt1, vt2und lege dann in 'D3DFVF' fest was die Strukture beinhaltet,
erstelle einen Vertex Buffer und kopiere die Daten da rein, richtig ??
und auch den index (face) oder ist dies serperat ?
-
Wenn du die Fixed Function Pipeline benutzt: Ja, so macht man das.
Was du mit "index (face)" meinst, weiß ich nicht.
-
mit face meine ich in welcher Reihenfolge die Punkte(vertex) verbunden werden.
wie z.B. in *.obj Dateien zu sehen ist. (1 3 2, 2 4 3 ....)
-
Die Konnektivität wird implizit durch den Primitiventyp festgelegt. Wenn du z.B. eine TriangleList renderst, bilden immer 3 Vertices ein Dreieck, bei einer TriangleStrip bildet jeder Vertex mit den letzten 2 ein neues Dreieck usw.
Steht aber alles in der Doku...
-
Das ist schon klar, was ich meine ist, daß ich in der Datei auch die Daten habe, in welcher Reihenfolge die Punkte zu Triangles verbunden werden.(Face) d.h. es kann durchaus sein, daß der erste, zweite und letzen Punkt ein Dreieck bilden. Aber vielleicht reden wir jetz aneinander vorbei.
in OpenGL war das z.B//def glVertexPointer(3, GL_FLOAT, 0, VERTICES_ARRAY); //Draw glDrawElements(GL_TRIANGLES, ANZAHL, GL_UNSIGNED_SHORT, INDICES_ARRAY)wobei INDICES_ARRAY ein Array mit WORD's ist, die die Reihenfolge beinhalten, wie die Dreiecke zusammengesetzt sind.
naja, muß mal etwas mehr lesen um dahinter zu kommen. code beispiele sind mir immer das liebste um es umzusetzen.
-
ich denke mal daß es dieses ist.
DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );aber mit einem ARRAY ? schleife ?
-
Was du suchst nennt sich in DX Index Buffer.
-
ah, ok,
danke