Für speichereffiziente eingebettete Echtzeitgrafiken habe ich traditionell DDS-Bilder verwendet, die mit GL_LUMINANCE
codiert sind, wenn ich verlustfreie Graustufenbilder benötige (oder GL_LUMINANCE_ALPHA
, wenn Alpha benötigt wird). Ich habe jedoch gerade festgestellt, dass diese Dateiformate in OpenGL 3 veraltet und von 3.1 entfernt wurden.
Gibt es ein Ersatzbildformat für verlustfreie Graustufendaten, die 8 Bit pro Pixel oder weniger betragen (oder 16 Bit pro Pixel, wenn Alpha beteiligt ist)?
Wenn Sie auf dieser Wiki-Seite ein wenig nach oben scrollen, sehen Sie GL_RED/GL_R*
und GL_RG*
für 1- und 2-Kanal-Bilder.
GL_RED
: Jedes Element ist eine einzelne rote Komponente. Der GL konvertiert ihn in Gleitkomma und fügt ihn zu einem RGBA-Element zusammen, indem er 0 für grün und blau und 1 für alpha ... anfügt.
GL_RG
: Jedes Element ist ein rot / grünes Doppel. Der GL konvertiert ihn in Gleitkomma und fügt ihn zu einem RGBA-Element zusammen, indem er 0 für Blau und 1 für Alpha anfügt ...
Wie GuyRT darauf hingewiesen , wenn Sie haben EXT_texture_swizzle/ARB_texture_swizzle
und / oder OpenGL Version & gt; = 3.3 Sie können die Swizzle-Maske verwenden, um Ihre Textur zu erweitern / neu anzuordnen Farbkomponenten.