png statt bmp darstellen?

xelluloid

Grünschnabel
Hallo,
ich habe mal eine Frage. Bzw eigentlich hat ein Kumpel von mir ein Problem und ich wollte mich mal erkundigen.
Wir wollen ein kleines Spieleprojekt aufziehen und zur Zeit kommt er (Programmierer) auch gut mit der Engine voran.
Allerdings fragen die anderen Mitglieder sich (vor allem die Grafikerin und ich), ob es möglich ist und vielleicht auch effizienter png-Grafiken einzusetzen oder zumindest jpg, da diese ja doch ganz schön komprimiert sind.
Unser Programmierer meinte, ihm bringen nur bmp-grafiken etwas und er könne in C++ nichts mit png anfangen, weil letztendlich doch bmp dargestellt wird.
Nun wollte ich fragen, was daran ist, ob es Tutorials dafür gibt oder ähnliches? Ich habe schon einige Bibliotheken gefunden, aber ich glaube, er möchte lieber selbst programmieren, was ich ein wenig verstehen kann, da er seine Engine schon ganz gut erstellt hat und immer gut vorankommt.
Allerdings wären ein paar Ansatzpunkte nicht schlecht und überhaupt würde ich gerne wissen, ob es sich lohnen würde, png-Grafiken statt bmp zu benutzen, da es wirklich viele Grafiken werden.
Vielen Dank im Vorraus
Gruß Sebastian
 
Bei jpeg kommt es unter umständen zu Problemen mit den Colorkeys. Ob das bei png auch zutrifft weis ich nicht. Es ist aber möglich es zu benutzen. Was verwendet er in seiner Engine? (DirectX , Device Contexts , OpenGL ...)
 
xelluloid hat gesagt.:
Unser Programmierer meinte, ihm bringen nur bmp-grafiken etwas und er könne in C++ nichts mit png anfangen, weil letztendlich doch bmp dargestellt wird.

Und genau das ist meines Wissens auch das Problem, die JPG wird quasi nur extrahiert, und dann als BMP dargestellt. Das Problem ist dann das aus einer 300kb Datei eine ca 30MB Version im RAM wird, und das ist nicht gerade gut...
Zumindest wenn man das mit der pictureklasse macht, welche du hier im Forum runterladen kannst (einfach suchen bei interesse cpicture.zip oder so...)

Mit DirectX und OpenGL haben die das aber irgendwie besser gelößt, da wird das Speichervolumen nicht so extrem, würde wenn überhaupt in die Richtung gehen.

Gruss

MFC OpenGL
 
JPG würde ich schon mal komplett vergessen. JPG komprimiert mit Verlusten, da geht tatsächlich Bild-Information verloren. Es lässt sich mit guter Qualität verwenden, aber da würde ich speziell die Grafiken dafür aussuchen (Fotos bzw. Verläufe sind die Stärke von JPG). Auf jeden Fall die Original-Grafiken NICHT im JPG-Format speichern.

PNG ist in der Hinsicht das Beste, was dir passieren kann. PNG komprimiert ohne Verluste. Allerdings da selber einen Loader für zu programmieren ist dann doch etwas aufwendig (das ist nicht mal eben so ein bisschen einlesen). Sucht mal nach der libpng. Das ist eine Open-Source-Implementation eines PNG-Loaders. Der funktioniert aber dann auch einwandfrei. Ist leider etwas umständlich, da der Source ziemlich kryptisches C ist, aber man muss im Grunde nur einmal den Ladevorgang in eine Funktion wegpacken.
 
Mir fiel gerade noch was anderes ein...

Wenn du deine Grafiken als SVG (Vektorgrafiken) machst, kannste nichtnur die Datei einfach und schnell auslesen, sondern auch mit sehr wenig Aufwand deine Bilder zeichnen lassen.
 
Zurück