2d Leveldarstellung optimieren
-
SDL rechnet beim Skalieren ja immer noch Bitmapweise, d.h. die Last liegt komplett auf der CPU. Evtl. solltest Du die 3D-Beschleunigung deiner Karte nutzen.. Es gibt auch Toolkits, die automatisch die 3D-Features auf 2D-Grafiken abbilden, zB. ClanLib. Damit kann man dann wie gewohnt auf den Bildschirm blitten und herumskalieren, und mit 900 skalierten Tiles pro Bildschirm bekommst Du sicher 100fps hin mit einem aktuellem PC.
-
SDL kann von sich aus skalieren?
Hab ich nirgends gefunden.
Ich nehm dazu ja auch schon
sdl_gfx ( http://www.ferzkopp.net/~aschiffler/Software/SDL_gfx-2.0/ ) und das zoomen läuft ohne anti-aliasing auch schnell genug.Hauptproblem ist das zoomSurface eine neue surface erstellt beim zoomen und ich damit
- erst alle Tiles in eine zwischensurface pinseln muss
- dann zwangsweise eine gezoomte temporäre Surface via zoomSurface erstellen muss
- diese dann auch nocheinmal auf den Bildschirm ausgeben muss.
und letztlich noch
- die temporäre Surface wieder freigeben mussUnd dabei sind alle 3 surfaces 800*600 Öö
Wenn ich dem zoomSurface dann auchnoch mit demParameter SMOOTHING_ON, also aktiviertem anti-aliasing starte, dann -> 10 fps
-
Was genau ist das Problem, wenn du beim Laden skalierst?
Bye, TGGC (Der Held ist zurück)
-
Das ich dann kein anti-aliasing machen kann beim vergrössern, weil ich im Tileset ja mehrere Tiles nebeneinander liegen ( http://www.die-gaming.de/tiles/tilesetaufbau.png ).
Packe ich die schöngezeichneten Tiles in dann nebeneinander, sind zwischen den Tiles teilweise Striche, weil nicht mehr die pixelgenaue Trennung der einzelnen Tiles eingehalten wurde und die Tiles auch nciht mehr genau aneinander passen.
-
mein tip: grafikprog auf, tileset rein, vergrößern, abspeichern, fertig!
geloescht
-
Problem dabei:
Es gibt tausende freier rpgmaker Chipsets die ziemlich genau 100% kompatibel sind im Moment zu meinem Editor.
Würd ich da jetzt so dran rumbasteln wären die halt nurnoch nach "grafikprog auf, tileset rein, vergrößern, abspeichern, fertig!" kompatibel.
Vorteil wäre natürlich das man auch mal nicht-verpixelte Chipsets selbst basteln könnte in photoshop oder so und ins Spiel einbauen könnte
-
Dann schreib halt eine Fkt. die es vergrössert, ohne diese Probleme zu verursachen. Die Stunde wirst du ja wohl haben.
Bye, TGGC (Der Held ist zurück)
-
@dreaddy:
Naja, irgendwo in den SDL-Sourcen gibt (gab?) es auch eine Skalier-Blit-Funktion, die aber nicht oeffentlich und nicht dokumentiert ist. Evtl. ist die inzwischen wieder verschwunden.Aber ich wuerde allgemein fuer solche Sachen OpenGL/DirectX nehmen, da hast Du wie gesagt die Skalierung, Smoothing, Alphablending umsonst.
-
In der SDL gibt es keine Funktion zum Zoomen! Da muss man auf Zusatzbibliotheken zurückgreifen z.B. SDL_gfx, hab aber noch nie damit gearbeitet. Aber was spricht dagegen, das Bild beim laden zu zoomen?
geloescht
-
geloescht schrieb:
In der SDL gibt es keine Funktion zum Zoomen! Da muss man auf Zusatzbibliotheken zurückgreifen z.B. SDL_gfx, hab aber noch nie damit gearbeitet. Aber was spricht dagegen, das Bild beim laden zu zoomen?
geloeschtHat er doch schon gesagt!
-
Tileset zerschnippeln, jedes Tile einzeln vergrößern und dann die tiles wieder zusammensetzen. So gibt es keine Streifen an den Tilerändern beim Antialiasen (cooles Wort *grinz*). So würde ich das jetzt machen.
geloescht
-
geloescht schrieb:
Tileset zerschnippeln, jedes Tile einzeln vergrößern und dann die tiles wieder zusammensetzen. So gibt es keine Streifen an den Tilerändern beim Antialiasen (cooles Wort *grinz*). So würde ich das jetzt machen.
geloeschtOder wie TGGC schon sagte das alles als Algo automatisieren...
-
per hand würd ich das natürlich auch nicht machen! was denkst denn du
geloescht