![]() |
[DirectX] 2D-Sprites mit Direct3D
hallo
ich bin gerade dabei ein Klasse für 2D Sprites mit Hilfe von Direct3D zu schreiben. Hierzu wird ein Rechteck aus 4 Vertices zusammen gesetzt und dementsprechend texturiert. Momentan besitzt jedes Objekt seinen eigenen VertexBuffer, wobei die Positionierung, Rotierung und Skalierung mit Hilfe der WeltMatrix erfolgt. Es klappt eigentlich sehr gut und führt zum gewünschten Ergebnis. Gibt es in diesem Fall sinvollere Möglichkeiten der Verwaltung, die vorallem im Punkt Geschwindigkeit besser sind? Danke Luki |
Re: [DirectX] 2D-Sprites mit Direct3D
hallo
hab mir mittlerweile eine andere Lösung überlegt. Ich benutze nun nur noch einen VertexBuffer der die Eckpunkte eines 1*1 großem Vierecks beinhaltet. Das Viereck wird dann mit Hilfe der Positions- und Skalierungsmatriz auf die Grösse des 2D-Sprites angepasst und dementsprechned texturiert. Der Vorteil ist, es muss nicht bei jedem Rendervorgang jedesmal wieder der VertexBuffer neu gesetzt werden, was meiner Meinung nach schneller sein müsste. Im nächsten Schritt werden dann 2D-Obejkte mit der selben Textur hintereinander gerendert, damit nicht jedesmal die Textur neu gesetzt werden muss. Was haltet ihr davon? MfG Luki |
Re: [DirectX] 2D-Sprites mit Direct3D
Das ist genau der richtige Ansatz. Gamedev.net hält hierzu mittlerweile mehrere Artikel bereit (unter DirectX Graphics). Wenn du seeeeehr viele eher statische Sprites hast (zum Beispiel statische Levelgrafik), kannst du diese auch alle auf einmal in einen Vertexbuffer packen und somit in einem Durchlauf rendern. Ein wichtiger Performance-Tipp von Microsoft ist nämlich immer noch, die Zahl der DrawPrimitive-Aufrufe zu minimieren.
Die Alternative wäre natürlich, einfach D3DXSprite zu verwenden - mit dem Summer Update 2004 ist das ziemlich schnell und elegant geworden. |
Re: [DirectX] 2D-Sprites mit Direct3D
hallo
werd mir das Summer Update mal anguckn. Weiters werd ich mir noch ein konzept für die Levelgestaltung überlegen, da dein Vorschlag, die statischen Objekte alle in einen VertexBuffer zu packen nicht schlecht klingt. danke Luki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz