OpenGL c#. Texturefarben vertauscht



  • Hallo,
    ich versuche mittels c# eine kleine Texture mittels opengl anzuzeigen.
    aber die Farben der Texture sind vertauscht (z.b. statt rot wird blau angezeigt)
    Dabei nutze ich nur "Standard-Funktionen" dafür.

    Bitmap bitmap = new Bitmap(config.backgroundFilename);
                Rectangle rect = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
                System.Drawing.Imaging.BitmapData bitmapData = bitmap.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
                bitmap.UnlockBits(bitmapData);
                Gl.glGenTextures(1, out glTexture);
                Gl.glBindTexture(Gl.GL_TEXTURE_2D, glTexture);
                int width = bitmap.Width;
                int height = bitmap.Height;
                Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGB32F_ARB, width, height, 0, Gl.GL_RGB, Gl.GL_UNSIGNED_BYTE, bitmapData.Scan0);
                Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);
    

    hat jemand eine idee woran das liegt?



  • ok, windows und opengl ordnet die farben anders an.
    RGB bzw BGR
    klasse...^^



  • Exakt. Du könntest einfach beim Format statt GL.GL_RGB GL.GL_BGR angeben 😉
    Achja: Warum genau muss es eine float-Textur sein, wenn du sie nur mit einfachen 8-bit Daten befüllst?


Anmelden zum Antworten