[DX9] Grosse Sprites

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Benutzeravatar
Andi
Beiträge: 81
Registriert: 12.03.2009, 00:19

[DX9] Grosse Sprites

Beitrag von Andi »

Endlich wieder zeit für DirectX :mrgreen:

Da ich mich zur Zeit wieder mit 2D beschäftige, wollte ich mal so in die Runde fragen, ob es ausser Tile`s andere sinnvolle Möglichkeiten gibt, um grosse Sprites (bsw. 40000x900) für Hintergünde zu managen und rendern?

Es geht mir eigentlich darum ein hochauflösendes (1600x900 oder höher) Jump`n Run zu erstellen, das nicht zwangsläufig aus Tile`s, vielmehr als gezeichnete und digitalisierten Bilder besteht. Darum wäre es praktisch wenn man die Bilder nicht in Tile`s zerlegt müsste.
Im Prinzip muss es auch nicht GPU gebunden sein, wichtig ist nur das keine fremd libs zum einsatz kommen und es performat bleibt, also idealerweise mit DX und der WinAPI zu lösen wäre.

Habe dazu auch einige Fragen zum DX SDK die lass ich jetzt aber erst mal aussen vor, und hoffe das der eine oder andere was zum Thema beitragen möchte.

MFG
Andi
Benutzeravatar
Zudomon
Establishment
Beiträge: 2257
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: [DX9] Grosse Sprites

Beitrag von Zudomon »

Warum den Hintergrund nicht einfach aus Vektorgrafik zusammenbauen? Also quasi mit Dreiecken, so wie du auch 3D rendern würdest...
Der Vorteil wäre, dass das ganze kaum speicher kosten würde. Man bräuchte nichtmals irgendwas zum streamen oder so.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [DX9] Grosse Sprites

Beitrag von Schrompf »

Ansonsten wäre die Antwort: in Teile passender Größe aufteilen und als einzelne Sprites rendern. Es bietet sich z.B. 2048x900 an, ohne MipMaps und mit DXT1-Kompression bist Du da bei 18MB für 40000x900. Das tut keinem mehr weh.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Zudomon
Establishment
Beiträge: 2257
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: [DX9] Grosse Sprites

Beitrag von Zudomon »

Schrompf hat geschrieben:...ohne MipMaps und mit DXT1-Kompression bist Du da bei 18MB für 40000x900. Das tut keinem mehr weh.
Stimmt... 18 MB ist doch sehr wenig.... hmmm. Da lohnt sich ja der Aufwand nicht. Das kann man auch direkt auf die Graka stopfen.
Benutzeravatar
Andi
Beiträge: 81
Registriert: 12.03.2009, 00:19

Re: [DX9] Grosse Sprites

Beitrag von Andi »

Danke für die Antworten.

Ich dachte mir schon fast, dass man das entweder mit Vertizen oder mit einem Tile basiertem System lösen muss. Der Vorteil bei ersterem erschliesst sich mir nicht und das bereitstellen der Texturen ist möglicherweise auch etwas komplizierter als mit Sprites. Denke auch der Performance gewinn der mir Vertizen gegenüber Sprites bringen ist vernachlässigbar. Ihr könnt mich gerne korrigieren ;)

Kompriemieren ist sicher auch ein guter Optimierungsschritt, leider unterstütz DXT1 kein Alphablending, müsste also bsw. DXT2 benutzen, da ich dan das gleiche Prinzip für die Level benutzen würde. Also die Level liegt vor dem Hintergrund.

Muss ich mich demfall mal über das Resourcen-Management gedanken und das erstellen einer Tile-Map machen.

Ab Welcher GraKa generation kann man mit Texturen >= 1024 pixeln arbeiten, nur so zur neugier. Wie sieht das eigentlich aus wenn man Texturen im Arbeitspeicher legt, sind die dan auch auf eine Feste grösse begrenz? Finde dazu keine Infos in der Doku.

Muss mich da wieder einarbeiten, desshalb sry wenn ich dumme Fragen stelle :D
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [DX9] Grosse Sprites

Beitrag von Schrompf »

Texturen mit 1024er Größe sind so ab 2001 gängig. Heutzutage frisst selbst die hinterletzte OnBoard-Intel-GPU 8192er Texturen.

Sprites sind heutzutage auch nur noch zwei Dreiecke mit Textur drauf. Es gibt keine "Sprites" wie im alten Sinne mehr. Alles wird mit 3D-Hardware gepinselt. Demzufolge gibt es auch keinen Unterschied zwischen Vertizen und tile-basierten Systemen. Und alle Lösungen sind auch gleich schnell. Und alle Deine Daten liegen am Ende im Grafikkartenspeicher, das macht Windows bzw. DirectX vollautomatisch für Dich. Sprite-Rendering gibt es für Lau in der D3DX-Lib.

Die einzige abweichende Lösung wäre, wenn Du Dir einen Framebuffer im Speicher aufmachst und das Zusammenstellen selber programmierst. Selbst mal AlphaBlending, Farbmodulation oder Skalierung/Rotation zu implementieren kann durchaus auch Spaß machen. Wäre mir nur heutzutage zuviel Arbeit.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Andi
Beiträge: 81
Registriert: 12.03.2009, 00:19

Re: [DX9] Grosse Sprites

Beitrag von Andi »

Danke nochmals.
Hatte schon vergessen wie fix hier geantwortet wird.
Schrompf hat geschrieben: Die einzige abweichende Lösung wäre, wenn Du Dir einen Framebuffer im Speicher aufmachst und das Zusammenstellen selber programmierst. Selbst mal AlphaBlending, Farbmodulation oder Skalierung/Rotation zu implementieren kann durchaus auch Spaß machen. Wäre mir nur heutzutage zuviel Arbeit.
Da ich im Moment mit wenig aufwand Erfolgserlebnisse feiern möchte, nehm ich was ich vom SDK bekomme. Weiss ich nun was ich wissen solte, nun ab an Stift und Papier ^^
Antworten