2D Pseudo Single Surface

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

ProfJake

ehemals "DTC" / "Fabian Niemann"

Betreff: 2D Pseudo Single Surface

BeitragSo, Jun 29, 2008 11:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
bringt es irgendwelche Vorteile, wenn ich ein bild einmal lade und es dann von vielen Instanzen zeichnen lasse?
Im Klartext:
Ich stelle mir das so vor, dass ich ein Bild sehr oft zeichnen muss (z.B.: Units in einem RTS),
da würde ich eine Klasse TUnitManager erstellen, die alle Bilder enthält.
Den Units würde nur ein Pointer auf das Bild übergeben.
Bringt das einen Geschwindigkeits- oder Speicherplatzvorteil?
Oder optimiert die Grafikkarte das sowieso?

P.S.: Bei Tiles wäre das auch sehr praktisch.
  • Zuletzt bearbeitet von ProfJake am So, Jun 29, 2008 11:41, insgesamt einmal bearbeitet
 

ChristianK

BeitragSo, Jun 29, 2008 11:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, mit Single Surface hat das nichts zu tun. Immer, wenn du ein Bild zeichnest, passiert Folgendes:
1. Die Textur ( das geladene Bild ) wird als aktive Textur eingesetzt.
2. Ein Buffer, der die 4 Eckpunkte des Bildes inklusive Farbe und Alpha enthält, wird an die Grafikkarte geschickt, damit sie das Rechteck zeichnen kann. Das ist unabhänig vom verwendeten Bild.

Und genau da liegt der Nachteil. Bei Single Surface würde man nicht für jeden Aufruf von DrawImage einen neuen Buffer an die Grafikkarte schicken, sondern beispielsweise 10 Bilder, die die gleiche Textur nutzen, in einen Buffer schreiben und den zur Grafikkarte befördern, was deutlich schneller ist. So, wie Max2D aufgebaut ist, ist das aber nahezu unmöglich bzw. sinnlos. Es hat ja mal einen Buffered-D3D7-Driver gegeben, den Sibly dann aber auch wieder rausgenommen hat.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

ProfJake

ehemals "DTC" / "Fabian Niemann"

BeitragSo, Jun 29, 2008 11:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Erklärung.
Also wie ich mir das jetzt so zusammengereimt habe, bringt das keinen Geschwindigkeits- aber immerhin einen Speichervorteil, da das Bild ja nur einmal geladen wird, richtig?

P.S.: Ich weiß schon, dass Single Surface was anderes ist, aber wie sollte ich es denn sonst nennen?
[EDIT] Titel geändert.
 

ChristianK

BeitragSo, Jun 29, 2008 12:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau, das Bild existiert nur einmal im Speicher und kann so oft gezeichnet werden, wie du willst.

pupil hat Folgendes geschrieben:
P.S.: Ich weiß schon, dass Single Surface was anderes ist, aber wie sollte ich es denn sonst nennen?

Single Texture/Image vielleicht. Very Happy
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group