Brauche Hilfe beim Einlesen von PNGs

RalleYTN

Bekanntes Mitglied
Ich arbeite gerade an einem Spiel und wollte meinen eigenen PNGReader bauen. Ich kann ganz einfach ImageIO nehmen und das funktioniert dann auch, jedoch ist das ein wenig zu langsam. Mein Ziel ist es die Ladezeit zu beschleunigen indem ich...

1. nicht den Overhead von ImageIO und BufferedImage habe
2. nicht erst das BufferedImage zu ARGB konvertieren muss nur um es dann wieder in ABGR zu konvertieren.
3. es direkt als ein ein dimensionales integer array im ABGR Format einlese
4. unnötige Errorchecks auslasse, da die Texturen für mein Spiel auf jeden Fall korrekt sind

Das ganze funktioniert auch schon für PNGs im ColorType 3 (Indexed).
Ich habe jetzt jedoch ein Problem mit den ColorTypes 2 (RGB) und 6 (RGBA).
Bei ColorType 2 bekomme ich irgendwie nur die Hälfte des Bildes mit selstamen Farben und bei 6 sind die Muster schon richtig jedoch stimmen die Farben nicht.

Mein Source Code kann hier gefunden werden: https://github.com/RalleYTN/Heroica...e/ralleytn/games/heroicafabulis/engine/io/png

Ich habe leider nicht so genau eine Ahnung woran es hakt.

ColorType 6:
ColorType6.png

ColorType 2: ColorType2.png
 

RalleYTN

Bekanntes Mitglied
Da du anscheinend sowieso LWJGL 3 verwendest, nimm doch einfach die Bindings zu stb_image -> https://github.com/nothings/stb.
Gehe hierzu auf https://www.lwjgl.org/customize , wähle eine der drei Versionen und unter Contents wähle "stb". Die entsprechende Klasse wäre dann org.lwjgl.stb.STBImage.
Das könnte ich natürlich machen, jedoch würde ich Ziel 4 damit verletzen und durch die unnötigen Errorchecks werden die Ladezeiten wieder verlängert.
 

httpdigest

Top Contributor
Naja, was ist denn dein Zeitbudget zum Laden der Bilder? Wann ist es denn zu langsam? Hast du stb_image schon mal ausprobiert und geschaut, ob es nicht eventuell schnell genug ist?
 

RalleYTN

Bekanntes Mitglied
In dem Spiel plane ich keine festen Ladevorgänge zu haben, daher sollten 10 Texturen mit ungefähr 256*256 Maßen möglichst ohne Ruckeln bei einem PC der Mittelklasse geladen werden können.
Ich habe noch nicht STB gearbeitet und ich bin extrem zögerlich mit dem Einführen neuer Bibliotheken wenn der Gewinn nicht gut genug ist. Ich hätte dann eine Bibliothek von der ich vielleicht 5% nutze und das auch nur für das Laden von PNGs, daher ist es nicht genug Wert.
 

httpdigest

Top Contributor
Was du natürlich auch machen kannst: Während des Installierens (bzw. des erstmaligen Startens) deines Spieles die Bilder entpacken und gleich in einem für das Spiel besten Format auf der Platte abspeichern, z.B. als raw RGBA Bytestream zum Laden in OpenGL.
PNG ist dann also nur ein Transportformat, um den Footprint des Spieles für Download bzw. Speichermedium gering zu halten. Da dein Spiel ja anscheinend sowieso ein Desktop-Spiel ist, kann es auf Platte schon gern ein paar hundert Megabyte groß sein. Und die Performance von sequenziellem Dateilesen ist vermutlich besser als jeder Dekompressionsalgorithmus. Somit kann von der Lade-Performance her eine größere Datei im richtigen Format besser sein als eine kleinere Datei, die aber noch entpackt werden muss. Das muss man aber natürlich messen.
Ich habe noch nicht STB gearbeitet und ich bin extrem zögerlich mit dem Einführen neuer Bibliotheken wenn der Gewinn nicht gut genug ist. Ich hätte dann eine Bibliothek von der ich vielleicht 5% nutze und das auch nur für das Laden von PNGs, daher ist es nicht genug Wert.
So wie es aussieht, scheinst du also gar keine Vergleichswerte zu haben - außer mit ImageIO (btw. wie viel schneller ist denn dein Loader gegenüber ImageIO?). Vielleicht ist stb ja auch 10x schneller als jeder Loader, den du selber schreiben könntest. Probieren geht über Studieren. :)
 

RalleYTN

Bekanntes Mitglied
Ein eigenes Dateiformat ohne Kompression zu nutzen ist eine gute Idee.
Werde ich auch gleich umsetzen, jetzt wüsste ich aber trotzdem gerne wo mein Fehler bei dem PNG liegt. Die Muster sind alle klar zu erkennen jedoch ist die Farbe falsch. An falschen dekomprimieren hat es also nicht gelegen und egal wie ich die Farben tausche kommt bloß Mist raus.
 

RalleYTN

Bekanntes Mitglied
Der Link funktioniert nicht mehr, da sich das Package geändert hat.
Hier ist der neue Link: https://github.com/RalleYTN/Heroica...n/games/heroicafabulis/engine/io/textures/png
Inzwischen habe ich EINS der Probleme gefunden.
Das Filter Byte wurde bei nicht indizierten Bildern nicht vernünftig geskippt und er ist auch nicht vernünftig durch alle Pixel gegangen. Jetzt sind nur noch die Farben absoluter Mist und da weiß ich immernoch noch nicht warum.
 

JuKu

Top Contributor
Sind die Farben zufällig anders, oder gibt es Auffälligkeiten?
Sind nur die Farben vertauscht, oder passt auch die Position nicht?
 

Blanco77

Mitglied
C'est pas normal!
Il s'agit simplement d'un format d'image.

Vous êtes sûr de la source de votre fichier, il peut être corrompu, ou peut être modifié.
Quel est sa taille?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Brauche Hilfe was zu Programmieren Spiele- und Multimedia-Programmierung 4
E Brauche Hilfe was soll ich tun Spiele- und Multimedia-Programmierung 7
C Java Brauche Hilfe Spiele- und Multimedia-Programmierung 5
javajavajava Java Lotto Zahl 6 aus 49 - Brauche Hilfe Spiele- und Multimedia-Programmierung 3
N Brauche Hilfe bei kleinem Spiel Spiele- und Multimedia-Programmierung 40
L Brauche hilfe mit KeyEvent Spiele- und Multimedia-Programmierung 4
B brauche hilfe bei der tastenzuodnung Spiele- und Multimedia-Programmierung 3
F Brauche Hilfe bei Bewegung eines Rechtecks [Applet] Spiele- und Multimedia-Programmierung 5
coolian ich brauche irgendeine gui lib für lwjgl2 Spiele- und Multimedia-Programmierung 51
M Brauche (kleine)InterpolatorHilfe Spiele- und Multimedia-Programmierung 24
StrikeTom Brauche .wav-datein Spiele- und Multimedia-Programmierung 11
J Brauche denkanstoß für kleines grafikframework Spiele- und Multimedia-Programmierung 3
G Brauche Tipps: 3D-Equalizer Spiele- und Multimedia-Programmierung 10
Atten007 Minecraft Hilfe bei benutzerdefinierten Bannervorlagen in MCreator benötigt Spiele- und Multimedia-Programmierung 0
R Flappy Bird Hilfe Spiele- und Multimedia-Programmierung 1
Atten007 Minecraft Hilfe bei der Fehlerbehebung in MCreator benötigt Spiele- und Multimedia-Programmierung 1
Atten007 Minecraft Hilfe beim MCreator Plugin benötigt Spiele- und Multimedia-Programmierung 0
Atten007 Minecraft Hilfe beim MCreator Plugin benötigt Spiele- und Multimedia-Programmierung 5
A [HILFE] - Minecraft-Problem! Spiele- und Multimedia-Programmierung 1
JEP1 Hilfe bei Spiel Spiele- und Multimedia-Programmierung 1
J TreeNode erstellen [Hilfe beim Konstruktor, Zeile 16] Spiele- und Multimedia-Programmierung 2
Z Minecraft Hilfe bei Minecraft PvP Client Spiele- und Multimedia-Programmierung 21
T Hilfe beim Platzieren der Schiffe Spiele- und Multimedia-Programmierung 14
P Snake Java Hilfe Spiele- und Multimedia-Programmierung 4
P Hilfe für Seminar Arbeit Spiele- und Multimedia-Programmierung 9
T Pong Hilfe bei einer Website Spiele- und Multimedia-Programmierung 4
T Hilfe bei decompilen von Plugin Spiele- und Multimedia-Programmierung 6
B HILFE bei Spieleprogrammierung mit Slick2D Spiele- und Multimedia-Programmierung 9
S Würfelspiel; Hilfe Spiele- und Multimedia-Programmierung 3
M Hilfe bei vier gewinnt Spiele- und Multimedia-Programmierung 4
S Hilfe bei Java Gui Spiele- und Multimedia-Programmierung 2
C Visual Story programieren/hilfe Spiele- und Multimedia-Programmierung 5
L Hilfe: Moog VCF Diskretisierungs Algorithmen (Smith/Stilson u.A.) Spiele- und Multimedia-Programmierung 0
J Spielfiguren laufen lassen auf einer html Tabelle mit Hilfe von Servlets Spiele- und Multimedia-Programmierung 2
M Hilfe bei Snake Spiele- und Multimedia-Programmierung 4
T Hintergrundmusik eines Spiels mit Hilfe von JLayer Spiele- und Multimedia-Programmierung 12
S 2D mit Slick - Anfänger sucht Hilfe Spiele- und Multimedia-Programmierung 4
C Generelle Hilfe zur lwjgl Spiele- und Multimedia-Programmierung 0
J Hilfe bei Fußballmanager Spiele- und Multimedia-Programmierung 0
C Hilfe bei einem Mosaikspiel Spiele- und Multimedia-Programmierung 16
J Java Steuerberechnung hilfe Spiele- und Multimedia-Programmierung 17
U Hilfe bei Implementierung eines PointSounds in Java3D Spiele- und Multimedia-Programmierung 1
E Hilfe bei Labyrinth Programmierung. Spiele- und Multimedia-Programmierung 9
S Hilfe bei Spiel Spiele- und Multimedia-Programmierung 6
T Aim-Hilfe Spiele- und Multimedia-Programmierung 4
S Shiritori / word chain / Wörterkette Hilfe Spiele- und Multimedia-Programmierung 1
J Hilfe bei mastermind dringend !!!!! Spiele- und Multimedia-Programmierung 3
S Hilfe bei Spielumsetzung Spiele- und Multimedia-Programmierung 6
M Kleines Spongebobspiel / Hilfe gesucht Spiele- und Multimedia-Programmierung 2
L Hilfe bei Entities benötigt Spiele- und Multimedia-Programmierung 6
L Hilfe bei Klassendesign für Spiel Spiele- und Multimedia-Programmierung 2
A Minecraft Hilfe bei Minecraft Mod Spiele- und Multimedia-Programmierung 1
F Einen Sound mit veränderter Tonhöhe und Geschwindigkeit abspielen - Hilfe erbeten Spiele- und Multimedia-Programmierung 29
V Keine Ahnung von OpenGL! Hilfe wäre lieb! Spiele- und Multimedia-Programmierung 8
L Minecraft Minecraft Bukkit Plugin hilfe Spiele- und Multimedia-Programmierung 9
E Hilfe bei Highscore programmierung Spiele- und Multimedia-Programmierung 3
G Acht-Damen-Problem HILFE! Spiele- und Multimedia-Programmierung 11
R Hilfe bei Snake-Programmierung Spiele- und Multimedia-Programmierung 6
B Hilfe bei Minecraft Plugin Spiele- und Multimedia-Programmierung 3
M Hilfe bei Spiel Programmierung Spiele- und Multimedia-Programmierung 4
B Hilfe bei GameGrid Spiele- und Multimedia-Programmierung 11
J Spiel mit Java SWING, LWJGL und JMonkey [Anfänger braucht Hilfe] Spiele- und Multimedia-Programmierung 10
N Hilfe bei Tower Defense Spiele- und Multimedia-Programmierung 22
R hilfe bei 2DSpiel. Spiele- und Multimedia-Programmierung 3
S AirHockey Kollisionsprobleme, bitte um Hilfe Spiele- und Multimedia-Programmierung 2
L Abfrage-Fehler? - Hilfe bei Tetris Spiele- und Multimedia-Programmierung 9
R Hilfe bei Reversi/Othello Spiele- und Multimedia-Programmierung 6
J Hilfe: Rotation X und Y Achse (Java3d) Spiele- und Multimedia-Programmierung 12
B Hilfe bekomme den IF befehl nicht hin Spiele- und Multimedia-Programmierung 10
C RFID Überwachung - Hilfe Spiele- und Multimedia-Programmierung 3
radiac FullScreenExlusiveMode HILFE!!! Spiele- und Multimedia-Programmierung 6
E TetrisApplet Thread Hilfe Spiele- und Multimedia-Programmierung 6
H PingPong HILFE !!! Spiele- und Multimedia-Programmierung 3
G GO-Spiel in Java noch fehlerhaft hoffe um hilfe Spiele- und Multimedia-Programmierung 7
N In einem Kasten springende Bälle programmieren...Hilfe Spiele- und Multimedia-Programmierung 7
E Hilfe bei einer GUI Programmierung mit Graph Spiele- und Multimedia-Programmierung 30
H Decke zeichnen mit Hilfe eines Polygons Spiele- und Multimedia-Programmierung 2
W Hilfe bei Pong mit Bluej Spiele- und Multimedia-Programmierung 4
A Hilfe bei der Methode COLOR (Java) Spiele- und Multimedia-Programmierung 10
S Hilfe: Ich sehe durch die ganze Api's nicht mehr durch! Spiele- und Multimedia-Programmierung 15
N Hilfe bei snake Spiele- und Multimedia-Programmierung 37
C Hilfe bei einfachen Game Spiele- und Multimedia-Programmierung 15
T Bitte um Hilfe bei Animationen Spiele- und Multimedia-Programmierung 10
G Fragespiel, Hilfe ! like Wer wird Millinär Spiele- und Multimedia-Programmierung 12
D Hilfe mit mini-spiel für die Schule. Spiele- und Multimedia-Programmierung 1
G Hilfe bei 3Gewinnt! Spiele- und Multimedia-Programmierung 2
C anfänger braucht hilfe für info unterricht Spiele- und Multimedia-Programmierung 21
A Hilfe bei Programmierung von Abalone Spiele- und Multimedia-Programmierung 6
S Hilfe bei Galgenmännchen Spiele- und Multimedia-Programmierung 4
M 'Mensch ärgere Dich nicht' - Hilfe! Spiele- und Multimedia-Programmierung 12
K Hilfe bei Grafikeinbindung in einem Spiel Spiele- und Multimedia-Programmierung 6
H Ich benötige Hilfe [Noob] Spiele- und Multimedia-Programmierung 9
R Probleme mit Sound in Applikation. HILFE Spiele- und Multimedia-Programmierung 5
B Hilfe gesucht!! (bewegen von grafischen Objekten) Spiele- und Multimedia-Programmierung 3
O Problem beim Aufrufen des Spiels von einem Menü Spiele- und Multimedia-Programmierung 7
G LIBGDX Problem beim resizen des Frames Spiele- und Multimedia-Programmierung 3
T Android App Absturz beim Starten Spiele- und Multimedia-Programmierung 41
R Fehler beim Laden eines 2D-Bildes Spiele- und Multimedia-Programmierung 3
T LWJGL 2.9.2: Seltsamer Effekt beim Rendern (VertexShader Problem?) Spiele- und Multimedia-Programmierung 3
T Problem beim Aufbau des Spielfelds Spiele- und Multimedia-Programmierung 18

Ähnliche Java Themen

Neue Themen


Oben