Seite 1 von 1

Großes Bild in mehrere Texturen splitten

Verfasst: 28.04.2012, 15:17
von shadow
Hallo,

ich möchte ein großes Bild (z. B. 1500x1500 Pixel) in mehrere Texturen splitten, um diese danach wieder mit mehreren Textured Quads zusammen zu setzen (2D-Orthognal). Dazu hab ich mal wieder ein OpenGL-Anfänger-Problem... bzw. eigentlich gleich zwei:

(1) Betrifft: Texture-Magnification und Minification. Ich hab es nicht geschafft, das Texture-Filtering zur Laufzeit von GL_NEAREST auf GL_LINEAR zu switchen. Irgendwie sah es immer nach GL_LINEAR aus, obwohl ich das nicht selbst gesetzt hatte. Ich wollte das direkt nach glBindTexture() machen, mit:

Code: Alles auswählen

            glTexParameteri(myTexture, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
            glTexParameteri(myTexture,GL_TEXTURE_MIN_FILTER, GL_NEAREST);
Dann hab ich festgestellt, dass ich schon beim Erstellen der Textur auch noch optional ein Filtering mitgeben kann. Hier war dann GL_NEAREST total pixelig und GL_LINEAR eben smoother... von daher also richtig (offensichtlich ist GL_LINEAR bei diesem Texture-Loader der Default-Wert). Aber welchen Sinn macht es, sich schon beim Laden der Textur für ein Filterung zu entscheiden, bzw. warum kann ich das Filtering nicht erst später setzen?

Hab schon versucht, das selbst zu lösen:
http://wiki.delphigl.com/index.php/Tutorial_TexFilter
http://www.c-plusplus.de/forum/121424


(2) Jetzt wollte ich die gesplitteten Texturen mit Textured Quads zusammen setzen. Bei GL_NEAREST hat das auch ohne weiteres geklappt, also scheint mein Code für die Textur-Koordinaten grundsätzlich zu passen (nicht 100%ig sicher :) ). Bei GL_LINEAR allerdings sehe ich eine kleine Lücke zwischen den Quads. Ich könnt mir vorstellen, dass das ein gängiges Problem ist; deswegen hab ich auch schon was im Netz dazu gefunden:

http://www.sjbaker.org/steve/omniv/tiling_textures.html

Allerdings scheint diese GL_CLAMP-Einstellung bei mir genau so wenig zu wirken, wie GL_TEXTURE_MAG_FILTER bzw. GL_TEXTURE_MIN_FILTER aus meinem ersten Problem von oben; mal ganz abgesehen davon, dass ich keine Ahnung hab, was das GL_CLAMP eigentlich genau tun soll :?

Danke für Eure Unterstützung!
Stefan

Re: Großes Bild in mehrere Texturen splitten

Verfasst: 29.04.2012, 01:24
von mOfl
glTexParameteri(myTexture, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(myTexture,GL_TEXTURE_MIN_FILTER, GL_NEAREST);
Wenn du das Tutorial richtig ansiehst, wirst du feststellen, dass der erste Parameter nicht dein Texturhandle ist, sondern das Target, in diesem Fall GL_TEXTURE_2D. Clamp u.ä. geht dann analog.

Re: Großes Bild in mehrere Texturen splitten

Verfasst: 29.04.2012, 17:17
von shadow
Super, vielen Dank für den Hinweis... damit geht es :oops: <- Anfänger

Zu meinem zweiten Problem: Ich spanne die Textur jetzt einfach bei glTexCoord2f() ein wenig weiter innen auf, dann sieht man fast nichts mehr, das reicht mir erst mal...

Danke nochmal!