OpenGL: Texture-Filtering einstellen
-
Hi!
Habe mich gestern mit den Filteringverfahren für Texturen beschäftigt. Jetzt ist die Frage, wie ich diese in OpenGL überhaupt umsetzen kann.Welche Parameter braucht glTexParameter(MIN und MAG) für
- Point Sampling (Für MIPMaps und Nicht-MIPMaps - falls für MIPMaps überhaupt möglich)
- Bi-Lineares Filtering (Für MIPMaps und Nicht-MIPMaps)
- Tri-Lineares Filtering
- An-Isotropisches Filtering (Für MIPMaps und Nicht-MIPMaps)mfg olli
-
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc03_9upe.asp
Google ist auch dein Freund.[edit]
GL_EXT_texture_filter_anisotropic
Könnte interessant sein
[/edit]
-
Ja, jetzt wird es mir auch klar...
Also bitte bestätigen, oder korrigieren:
- GL_NEAREST = Point Sampling
- GL_LINEAR = Bi-Lineares FilteringGL_NEAREST_MIPMAP_NEAREST, GL_LINEAR_MIPMAP_NEAREST, GL_NEAREST_MIPMAP_LINEAR und GL_LINEAR_MIPMAP_LINEAR wie darf man diese Verfahren verstehen?
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 -------- 1111 1111 1111 1111 ---- 22 22 -- 3Stellen wir uns vor das wäre die MIPMap mit den einzelnen Maps, und er ist gerade bei einem Pixel der MAP 0 und 1 einbeziehen muss.
GL_NEAREST_MIPMAP_NEAREST heißt dann, dass er Point Sampling auf Map 0 und 1 anwendet und dann nochmal Point Sampling für den Übergang der beiden gefilterten Maps.
GL_LINEAR_MIPMAP_NEAREST heißt, dass er bi-lineares Filtering auf Map 0 und 1 anwendet und dann nochmal Point Sampling für den Übergang der beiden gefilterten Maps.
GL_NEAREST_MIPMAP_LINEAR heißt, das er Point Sampling auf Map 0 und 1 anwendet und dann bi-lineares Filtering für den Übergang der beiden gefilterten Maps verwendet.
GL_LINEAR_MIPMAP_LINEAR heißt, er wendet bi-lineares Filtering auf Map 0 und 1 an und benutzt bi-lineares Filtering für den Übergang der gefilterten Maps.
Der Minifikante Filter wird nur benutzt, wenn die Textur verkleinert werden muss. Der Magnifikante Filter wird nur benutzt, wenn die Textur vergrößert werden muss.
Ist das so korrekt, wie ich es beschrieben habe?
Wie stellt man an-isotropisches Filtering ein?
mfg olli
Edit: OK, die an-istropische Filtering-Extension schaue ich mir mal an.
-
Vertex schrieb:
Ja, jetzt wird es mir auch klar...
Also bitte bestätigen, oder korrigieren:
- GL_NEAREST = Point Sampling
- GL_LINEAR = Bi-Lineares FilteringJa
Vertex schrieb:
GL_NEAREST_MIPMAP_NEAREST heißt dann, dass er Point Sampling auf Map 0 und 1 anwendet und dann nochmal Point Sampling für den Übergang der beiden gefilterten Maps.
Nein, er nimmt die passendste MipMap und daraus den passendsten Texel.
Vertex schrieb:
GL_LINEAR_MIPMAP_NEAREST heißt, dass er bi-lineares Filtering auf Map 0 und 1 anwendet und dann nochmal Point Sampling für den Übergang der beiden gefilterten Maps.
Nein, er nimmt die passendste MipMap und interpoliert daraus bilinear den Pixel
Vertex schrieb:
GL_NEAREST_MIPMAP_LINEAR heißt, das er Point Sampling auf Map 0 und 1 anwendet und dann bi-lineares Filtering für den Übergang der beiden gefilterten Maps verwendet.
Nur lineares Filtering (es gibt nur 2 Werte aus denen er interpolieren kann) ansonsten richtig.
Vertex schrieb:
GL_LINEAR_MIPMAP_LINEAR heißt, er wendet bi-lineares Filtering auf Map 0 und 1 an und benutzt bi-lineares Filtering für den Übergang der gefilterten Maps.
Wieder nur lineares Filtering zwischen beiden Maps, ansonsten richtig.
Vertex schrieb:
Der Minifikante Filter wird nur benutzt, wenn die Textur verkleinert werden muss. Der Magnifikante Filter wird nur benutzt, wenn die Textur vergrößert werden muss.
Ja
Vertex schrieb:
Wie stellt man an-isotropisches Filtering ein?
Glfloat largest_supported_anisotropy; // Die maximal unterstützte Anisotropie holen glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &largest_supported_anisotropy); // Und setzen glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, &largest_supported_anisotropy);Obiger Code ist aus http://www.nps.navy.mil/cs/sullivan/MV4470/resources/filter_anisotropic2.doc
ausserdem interessant:
http://www.msi.unilim.fr/~porquet/glexts/GL_EXT_texture_filter_anisotropic.txt.html