
Textures too dark
Posted Friday, 25 May, 2012 - 03:23 by Evinyl inHello everyone,
I'm currently working on a music visualizer c# app with OpenGL visualizations. I added texturing support to my program, but the loaded texture is a different color than the PNG file.
My texture loading code is
public static bool LoadOpenglTexture(out int Texture) { var _Name = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Visualizer", "texture.png"); if (System.IO.File.Exists(_Name)) { Bitmap TextureBitmap = new Bitmap(_Name); System.Drawing.Imaging.BitmapData TextureData = TextureBitmap.LockBits(new System.Drawing.Rectangle(0, 0, TextureBitmap.Width, TextureBitmap.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppPArgb); OpenTK.Graphics.OpenGL.GL.GenTextures(1, out Texture); OpenTK.Graphics.OpenGL.GL.BindTexture(OpenTK.Graphics.OpenGL.TextureTarget.Texture2D, Texture); OpenTK.Graphics.OpenGL.GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, TextureData.Width, TextureData.Height, 0, PixelFormat.Bgra, PixelType.UnsignedByte, TextureData.Scan0); TextureBitmap.UnlockBits(TextureData); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Nearest); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Nearest); return true; } else { Texture = -1; return false; } }
The drawing code I use is
GL.Enable(EnableCap.Texture2D); GL.BindTexture(TextureTarget.Texture2D, Texture); GL.Begin(BeginMode.Quads); GL.TexCoord2(1.0, 0.0); GL.Vertex2(0.0, lVolBottom); GL.TexCoord2(0.0, 0.0); GL.Vertex2(0.0, Height); GL.TexCoord2(0.0, 1.0); GL.Vertex2(lVolWidth, Height); GL.TexCoord2(1.0, 1.0); GL.Vertex2(lVolWidth, lVolBottom); GL.End(); GL.Disable(EnableCap.Texture2D); GL.Begin(BeginMode.Quads); GL.Color3(fFromColor[2], fFromColor[1], fFromColor[0]); GL.Vertex2(0.0, 0.0); GL.Color3(fFromColor[2], fFromColor[1], fFromColor[0]); GL.Vertex2(0.0, rVolTop); GL.Color3(fToColor[2], fToColor[1], fToColor[0]); GL.Vertex2(rVolWidth, rVolTop); GL.Color3(fToColor[2], fToColor[1], fToColor[0]); GL.Vertex2(rVolWidth, 0.0); GL.End(); GL.Color3(Color.Gray); GL.Begin(BeginMode.Lines); GL.Vertex2(lVolPeak, Height); GL.Vertex2(lVolPeak, lVolBottom); GL.Vertex2(rVolPeak, rVolTop); GL.Vertex2(rVolPeak, 0.0); GL.End();
A screenshot of the VU meter visualization:

The lower bar is the GL.Color(1.0,0.0,0.0) bar, and the upper bar is the solid red textured bar. The textured bar's RGB shows up as 119,14,18 in photoshop. Any idea why the texture color isn't solid red?


Comments
Re: Textures too dark
Some blending enabled?
Re: Textures too dark
I fixed it by calling gl.Color(1f,1f,1f,1f) before drawing the quad. Not sure what the proper way of fixing it is though.
Re: Textures too dark
Ahh this is cool. Mind sharing the code that generates that waveform? ;D
I'm a Web Developer who does Web Deisgn so I'd like to use this for one of my projects.
Thanks