Unter OS X habe ich eine Textur in OpenGL unter Verwendung der SDL_Image
-Bibliothek geladen (unter Verwendung von IMG_LOAD()
, die SDL_Surface*
zurückgibt). Es hat sich gezeigt, dass die Farbkanäle ausgetauscht wurden, d. H. Ich musste GL_BGRA
als Pixelformatparameter in glTexImage2D()
einstellen.Identifizieren des Pixeldatenformats in SDL
Gibt es eine Möglichkeit, das richtige Datenformat (BGRA oder RGBA oder etc ...) zu ermitteln, ohne einfach die Textur zu kompilieren und zu überprüfen? Und warum tauscht SDL diese Farbkanäle aus?
Ich wollte eine Antwort posten, aber mir wurde klar, dass ich einen großen Teil der Lösung vermisse. Grundsätzlich wird BGRA für unsignierte 8-Bit-normalisierte Texturen auf vielen Systemen bevorzugt, wo andere Typen dazu neigen, RGBA zu verwenden. Ich war jedoch nicht in der Lage, SDL_Image zu fragen, welches Format es ausgegeben hat. Dies ist ziemlich wichtig, um sicherzustellen, dass es dem entspricht, was Sie OpenGL sagen. Heutzutage wird wahrscheinlich jedes Bild, das Sie in ein vernünftiges System laden, von BGRA bestellt. RGBA oder ARGB können für HDR-Dateien angezeigt werden. –