Frage

Ich habe ein PNG-Bild mit Alpha. Ich muss es in BMP konvertieren, um es in meine OpenGL-Anwendung zu laden.BMP hat jedoch nur eine Option für 32-Bit, dh XRBG, wobei 'X' nur ein zusätzliches Byte für Auffüllzwecke ist (4-Byte-Ausrichtung).

Die Frage ist, wie dieses 'X'-Byte ultilisiert werden kann, um den Alphakanal zu enthalten, damit das BMP (32-Bit-XRGB) mit transparenten Pixeln in die GL-Anwendung geladen werden kann?

Vielleicht muss ich mein eigenes Tool erstellen, um diese Konvertierung durchzuführen?Was ich brauche, ist RGBA und nicht 'XRGB' oder 'ARGB'. Muss ich die XRGB-BMP-Datei lesen und Pixel für Pixel scannen, um in RGBA zu konvertieren?

Was ist der beste Weg in VC ++, wenn Konvertierung ein Muss ist? Jede Software, die transparentes BMP machen kann?

War es hilfreich?

Lösung

pixelformer sagt, dass es das kann http://www.qualibyte.com/pixelformer/#color_depths

Andere Tipps

Sie können PixelFormer verwenden.

Wenn Sie ULW_ALPHA für UpdateLayeredWindow () und LoadImage () verwenden, muss die BMP-Datei 32 sein -bit BGRA (mit vormultipliziertem Alpha und Zeilenreihenfolge unten) zeigt die Funktion die Bitmap nicht korrekt an.

Sie können PNG mit PixelFormer in BMP 32-Bit-BGRA konvertieren (Schritt 2).

  1. Öffnen Sie PixelFormer und klicken Sie auf Datei> Neu:

    enter Bildbeschreibung hier

    1. Dann Datei> Exportieren

      enter Bildbeschreibung hier

      P.S.:

      Photoshop hat beim Exportieren von BMP mit Alpha-Kanal die Unterstützung unterbrochen (Alpha kann nicht vormultipliziert werden, Alpha-Kanal-Wert wird 0). Sie verlieren den Alphakanal, aber der BGR-Wert wird korrekt geladen. Sie können weiterhin Photoshop verwenden, müssen jedoch manuell Alpha auf der Registerkarte "Alphakanal" zeichnen.

      Gimp hat auch beim Exportieren als BMP die Unterstützung unterbrochen. LoadImage () lädt nichts und Sie können das Bild nicht sehen. Ich vermute, dass dieses Problem dadurch verursacht wurde, dass Gimp BMP als Top-Down-Zeilenreihenfolge exportiert.

      Visual Studio-Ressourceneditor bietet auch die Möglichkeit, 32-Bit-BGR zu erstellen / bearbeiten, unterstützt jedoch keinen Alphakanal

Ich musste einmal das Gleiche tun und schrieb ein kleines Befehlszeilentool, das hier zu finden ist.

Open Source-Software - ImageMagick oder Gimp können ebenfalls für diese Bildkonvertierung verwendet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top