Welcher Image Typ am besten für 2D-Spiele geeignet?

Status
Nicht offen für weitere Antworten.

Dirt Devil

Mitglied
Hey Leute,

ich schreibe ein kleines Action-Spielchen als Applet. Dabei hab ich gelesen, dass es Unterschiede zwischen den einzelnen Image Typen gibt (beispielsweise bufferedimage und compatibleimage usw.)
jetzt wollt ich mich erkundigen, welcher typ für diese art von spielen am besten geeignet ist (also welcher typ sich am schnellsten aufbaut bzw. welcher typ die geringste Rechenpower benötigt).

Danke,
Dirt Devil
 

Marco13

Top Contributor
Eigentlich gibt es nur zwei Typen, die von Image erben. Der erste ist BufferedImage, mit dem man meistens hantiert. Der zweite ist VolatileImage, der irgendwie direkt auf den VRAM der Grafikkarte zugreift, und deswegen vmtl. in vielen Fällen schneller (und daher für Spiele besser geeignet) ist.
 

Quaxli

Top Contributor
Wie groß ist Dein Spiel eigentlich? Ich habe den Eindruck als könnte Dein Geschwindigkeitsproblem am Code liegen und nicht an der Art der Images.
Ich persönlich verwende i. d. R. BufferedImages und habe bisher noch keine Probleme mit der Geschwindigkeit gehabt, auch wenn relativ viele Grafiken erforderlich sind.
 

0xdeadbeef

Top Contributor
Es gibt noch etwas zwischen VolatileImage und BufferedImage, nämlich "managed" Images: wenn man ein BufferedImage per "createCompatibleImage" erzeugt, dann kann es ebenfalls hardwarebeschleunigt gezeichnet usw. werden. Wobei ich auch mal irgendwo gelesen habe, daß seit der Version 5 o.ä. die Hardwarebeschleunigung überall verwendet wird, wo es irgendwie geht. Mit "createCompatibleImage" macht man es der JVM aber besonders leicht, weil die Farbtiefe usw. ja der augenblicklichen Einstellung entspricht.
VolatileImages mögen noch einen Tick schneller sein, aber dafür hat man das Problem, daß sie jederzeit überschrieben werden können. Man muß sich also für jedes VolatileImage bei jeder Verwendung per contentsLost() abfragen, ob es überhaupt noch seinen gewünschten Inhalt hat.
Sowas lohnt sich also bestenfalls für einen Screenbuffer, nicht für jeden popeligen Sprite.

Ich benutze bei Lemmini z.B. ausschließlich per createCompatibleImage() erzeugte Images und sehe dadurch keine Performanceprobleme, obwohl pro Frame u.U. über 100 Objekte plus die große Hintergrundgrafik in dem Offscreenbuffer zeichne und den dann nochmal komplett (weil windowed) in den Screenbuffer kopiere.
 

m@nu

Bekanntes Mitglied
Code:
    /**
     * Erstellt aus einem <code>BufferedImage</code> ein Systemkompatibles
     * <code>BufferedImage</code>. Performance solcher Bilder ist höher beim
     * Zeichnen.
     * 
     * @param image
     * @return
     */
    public BufferedImage toCompatibleImage(BufferedImage image) {
        GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice d = e.getDefaultScreenDevice();
        GraphicsConfiguration c = d.getDefaultConfiguration();
        
        BufferedImage compatibleImage = c.createCompatibleImage(
                image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_ARGB_PRE);
        Graphics g = compatibleImage.getGraphics();
        
        g.drawImage(image, 0, 0, null);
        g.dispose();
        
        return compatibleImage;
    }

vll ja jemandem hilfreich an dieser stelle :)

<edit>
weitere performance verbesserung kann dadurch erreicht werden, dass du als imageObserver immer null verwendest (siehe auch oben im code snippet)
</edit>
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Große Spiele in welcher Sprache Spiele- und Multimedia-Programmierung 33
T Position eines Image verändern mithilfe eines Timers Spiele- und Multimedia-Programmierung 6
K Video: Per Image Information Spiele- und Multimedia-Programmierung 3
M Image unpainten Spiele- und Multimedia-Programmierung 3
B Bild ohne Image auf die Festplatte streamen Spiele- und Multimedia-Programmierung 4
X Android Slick AE Image Pfad Spiele- und Multimedia-Programmierung 3
A Drehen von einem Image Spiele- und Multimedia-Programmierung 4
C Mouseover Area genau wie Image Spiele- und Multimedia-Programmierung 8
L Slick-Image aus byte-array erzeugen Spiele- und Multimedia-Programmierung 2
0 2D Spiel Welt scrollen bzw Image erweitern Spiele- und Multimedia-Programmierung 2
T jME3: awt.Image <-> jME3.Image Spiele- und Multimedia-Programmierung 7
F nur Ausschnitt eines Image zeichnen Spiele- und Multimedia-Programmierung 9
F Hintergrund bei Image entfernen Spiele- und Multimedia-Programmierung 4
S Image-Einbindung Spiele- und Multimedia-Programmierung 5
StrikeTom .gif animation als image abspielen Spiele- und Multimedia-Programmierung 2
T Glüh effekt um Image Spiele- und Multimedia-Programmierung 9
radiac Aktuelles ScreenBild als Image? Spiele- und Multimedia-Programmierung 6
Stillmatic1985 Buffered Image drucken Spiele- und Multimedia-Programmierung 1
P Culling von Image-Objekten Spiele- und Multimedia-Programmierung 3
E Alternative zu import com.sun.image.codec.jpeg.JPEGCodec ? Spiele- und Multimedia-Programmierung 1
E JPCT background image Spiele- und Multimedia-Programmierung 3
P Grosses Bufferd Image Drucken Print API Spiele- und Multimedia-Programmierung 3
G Image drucken Spiele- und Multimedia-Programmierung 17
S Image will nicht laden Spiele- und Multimedia-Programmierung 3
A Image in BufferedImage konvertieren Spiele- und Multimedia-Programmierung 2
O Image dynamisch erstellen. Spiele- und Multimedia-Programmierung 6
G Punkt in Image auf Transparenz prüfen Spiele- und Multimedia-Programmierung 6
G Bereich im Image löschen Spiele- und Multimedia-Programmierung 4
H image.setRGB() zeichnet falsch Spiele- und Multimedia-Programmierung 3
R Transparente Farbe von (Buffered) Image Spiele- und Multimedia-Programmierung 10
O Image konvertieren in monochrom scharz/weiß Spiele- und Multimedia-Programmierung 3
F Image eines bestimmten Bereichs eines JPanels erstellen Spiele- und Multimedia-Programmierung 4
T Spiel als Vollbild starten mit Image als HIntergrund Spiele- und Multimedia-Programmierung 8
O transparente farbe in Image mit Graphics Spiele- und Multimedia-Programmierung 8
S Image to BufferedImage Spiele- und Multimedia-Programmierung 3
D Image.getGraphics() in einem Frame Spiele- und Multimedia-Programmierung 4
R 2D Game Oberfläche. Wie am besten? Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen

Neue Themen


Oben