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

3dcoder

Frischling

Beiträge: 40

Wohnort: Krefeld

  • Private Nachricht senden

11

01.02.2008, 13:15

Die Draw()-Methode sieht mir verdächtig aus: Du erzeugst pro Zeichen vier Eckpunkte für ein Rechteck und zeichnest dann mit

C-/C++-Quelltext

1
lpDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,10);


Erstmal ist hier die Primitivenzahl hart kodiert und der Typ stimmt nicht
mit den Daten überein die du bereitstellst...

Grüße
3dcoder

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

12

01.02.2008, 13:28

oh sry, das war mein interner test.^^

eigentlich steht in der iLength*2, wollte damit testwen ich hart code ob das gleiche rauskommt, und es passierte genau dasselbe: bei 5 zeichen (deswgen heir 10) werden nur 2 gezeichnet.

habs im code geändert!

3dcoder

Frischling

Beiträge: 40

Wohnort: Krefeld

  • Private Nachricht senden

13

01.02.2008, 13:41

Ok, trotzdem stimmt der Typ noch nicht - du baust in deinem Code Rechtecke zusammen.

Du renderst aber Triangle Strips... das passt nicht... bei einem Trianglestrip bilden die ersten drei Vertices ein Dreieck und dann jeder weiterere Vertex mit den beiden zuvor gesendeten ein weiteres Dreieck.

Du sendest die Ecken 12, 11, 22, 21 für jedes Zeichen - das führt dazu, dass die ersten beiden Dreiecke des zweiten Zeichens die Vertices vom ersten Zeichen mitbenutzen. Möglicherweise ist das Winding dann nicht richtig und darum werden die als Backfaces erkannt und gecullt?!

Falls es sowas wie D3DPT_QUADS nicht gibt bleibt dir nur über entweder
a) ein eigenen trianglestrip pro Zeichen zu zeichnen oder
b) auf D3DPT_TRIANGLELIST umstellen und pro Zeichen 6 Vertices zu senden.

Grüße

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

14

01.02.2008, 14:37

okay, also am backfaceculling liegt es nicht. jetz raff ich auch erstmal was du mir sagen wolltest, und das wird wahrscheinlich des rätsels lösung sein, der Primitivetyp. ich hab blos quadweise gedacht beim vertexbuffer füllen und nicht als ganzes betrachtet. dadurch gehen genau die häfte an zeichen verloren, oder genauer: es werden doppelt so viele triangles erzeugt (die aba eine größe von 0 haben!).

danke dir, wieder was dazugelernt.

Werbeanzeige