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?