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

22.06.2009, 11:25

Polygon zeichnen

Wie zeichnet man ein Polygon am besten mit DirectX? Bietet DX eine Funktion für Dreieckszerlegung?
Mein konkretes Problem ist, dass ich hier eine Liste von Punkten habe, die texturiert ausgegeben werden soll. Wie geht man das am besten an?

Danke

2

22.06.2009, 17:10

Ein Vertexbuffer wäre hier wohl geeignet. In dem speicherst du die Vertizes inklusive Texturkoordinaten.
Am schnellsten ist dann, wenn du nur eine Textur hast, diese setzt und dann alles auf ein Mal rendern kannst.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

22.06.2009, 20:43

Nein Direct3D kann nur Dreiecke rendern. Wenn du nur ein paar einfache Polygone rendern willst bietet es sich evtl. an einen D3DPT_TRIANGLEFAN zu verwenden...

4

23.06.2009, 08:38

Danke, nur leider geht das an meinem Problem vorbei. Um Dreicke zu rendern, muss ich mein Polygon zuerst zerlegen.
Hierfür bietet DirectX nichts?

riCo

Treue Seele

Beiträge: 165

Beruf: Student

  • Private Nachricht senden

5

23.06.2009, 09:04

Google mal nach "Polygon Triangulation", dass sollte dein Problem lösen. Da ich nicht aus der DirectX-Ecke komme, würde ich das so machen. Letztendlich wird DX intern nichts anderes machen..
Wir leben alle unter dem Sternenhimmel, aber wir haben nicht alle den gleichen Horizont.

6

23.06.2009, 09:35

Zitat

Nein Direct3D kann nur Dreiecke rendern. Wenn du nur ein paar einfache Polygone rendern willst bietet es sich evtl. an einen D3DPT_TRIANGLEFAN zu verwenden...


wurde doch schon gesagt, wie man das einfach lösen kannst. Die Liste kannst du eigentlich so wie sie steht behalten, du musst nur halt noch einen neuen Vertex setzen der möglichst mittig im Polygon sitzt. Dies wird beispielsweise oft in Chunked LOD Algorithmen verwendet.

riCo

Treue Seele

Beiträge: 165

Beruf: Student

  • Private Nachricht senden

7

23.06.2009, 09:48

Das funktioniert doch aber nur bei ganz primitiven Polygonen! Besser wäre doch ein Ansatz für jede mögliche Polygon-Form. Da kommt die Polygon-Triangulation ins Spiel..

Es sei noch erwähnt: "Triangle fans are not supported in Direct3D 10 or later." Quelle: http://msdn.microsoft.com/en-us/library/bb206271(VS.85).aspx
Wir leben alle unter dem Sternenhimmel, aber wir haben nicht alle den gleichen Horizont.

8

23.06.2009, 10:38

Danke für eure Tipps.
Ich hab mittlerweile einen guten Triangulator bei Codeplex gefunden. Funktioniert sehr gut, kann aber keine Löcher.
C# Code findet man hier:
http://www.codeplex.com/PolygonTriangulation

riCo

Treue Seele

Beiträge: 165

Beruf: Student

  • Private Nachricht senden

9

23.06.2009, 10:43

Einen Polygon-Algorithmus zu finden der Löscher berücksichtig, ist recht schwer. Ein Dirty Trick könnte sein, dass loch einfach als normales Polygon zu zeichnen, aber eben in der Hintergrundfarbe. Wie das mit DX ist weiß ich nicht, ich musste das bisher immer nur 2D machen.
Wir leben alle unter dem Sternenhimmel, aber wir haben nicht alle den gleichen Horizont.

10

23.06.2009, 11:03

Momentan kann ich auch ohne die Löcher gut leben. In meinem konkreten Fall ist das Polygon eine Wand und das Loch beispielsweise ein Fenster. Hab es jetzt so gelöst, dass ich das Fenster einen Tick vor die Wand zeichne. So hab ich auch keine Probleme mit den Verdeckungen.

Ein Loch in der Wand wäre natürlich schöner :)

Werbeanzeige