AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi [DirectX] 2D-Sprites mit Direct3D
Thema durchsuchen
Ansicht
Themen-Optionen

[DirectX] 2D-Sprites mit Direct3D

Ein Thema von memphis · begonnen am 5. Aug 2004 · letzter Beitrag vom 6. Aug 2004
Antwort Antwort
Benutzerbild von memphis
memphis

Registriert seit: 4. Apr 2003
Ort: Innsbruck
89 Beiträge
 
Turbo Delphi für Win32
 
#1

[DirectX] 2D-Sprites mit Direct3D

  Alt 5. Aug 2004, 11:53
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
Lukas
Wenn du nicht mehr weiter weißt, zeichne dir 'nen Einheitskreis.
  Mit Zitat antworten Zitat
Benutzerbild von memphis
memphis

Registriert seit: 4. Apr 2003
Ort: Innsbruck
89 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: [DirectX] 2D-Sprites mit Direct3D

  Alt 6. Aug 2004, 12:20
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
Lukas
Wenn du nicht mehr weiter weißt, zeichne dir 'nen Einheitskreis.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#3

Re: [DirectX] 2D-Sprites mit Direct3D

  Alt 6. Aug 2004, 12:32
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.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von memphis
memphis

Registriert seit: 4. Apr 2003
Ort: Innsbruck
89 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: [DirectX] 2D-Sprites mit Direct3D

  Alt 6. Aug 2004, 12:41
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
Lukas
Wenn du nicht mehr weiter weißt, zeichne dir 'nen Einheitskreis.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz