Mit OpenGL(bzw. freeGLUT) große Bilder laden
-
Hi Leute,
Ich bin's mal wieder Ich möchte momentan für meine OpenGL(bzw. freeGLUT) 2D Anwendung ein hochauflösendes Hintergrundbild laden, welches vom Benutzer ausgewählt werden kann. Ich hab's erstmal mit einer normalen Textur versucht, da dies mir als erstes in den Sinn kam. Beim laden mit der Funktion SOIL_load_OGL_texture() gab diese false zurück -> Laden fehlgeschlagen. Nach kurzem nachdenken sind mir dann zwei Dinge/Fragen eingefallen:
1. Ist eine Textur vielleicht grundlegend der falsche Weg, wenn ja, wie mache ich's dann?
2. Könnte man das Bild vielleicht auf mehrere kleinere Texturen aufteilen, nur wie? Bild von der Festplatte in den RAM laden und dann Teile von ihm mit SOIL_load_OGL_texture_from_memory() in verschiedene Texturen laden?Danke schon mal
MfG
DragonRaider
-
Wie groß ist groß?
Größer als das deine zulässige (erhälst du mit glGet* und Parameter GL_MAX_TEXTURE_SIZE)?
Wenn ja, musst du splitten bzw Bild verkleinern und dann skalieren oder so.
-
Hi,
Das mit der Größe ist halt so ne Sache: Ich weiß nicht, wie groß das vom Nutzer übergebene Bild wird... Hast du ne Idee, wie ich beim Splitten vorgehen könnte(libs, links, Tipps alles willkommen)?
Danke schon mal.
MfG
DragonRaider
-
Du musst an die Daten des Bildes kommen, die kannst du dann bearbeiten.
-
Mit SOIL_load_image lädst du dir die Metainformationen und Daten des Bildes.
Anschließend vergleichst du die Bildgröße mit der maximalen Texturgröße und teilst entsprechend die Daten in Teilbilder auf, welche in Texturen geladen werden.