PDA

View Full Version : I want to display the color white as red



Treehouse
01-04-2010, 11:39 AM
Hello there,

i have the following problem. I used the QT-Toolkit from which i use the QImage object as buffer object for new image bits.

It is a 8bit grayscale image, which means that the color range
reaches from 0 to 255. The color black is 0 and 255 is white.

In the draw function i use the glTextlTexImage2D() function to draw the image bits into the texture. Before anyone ask.. it works, very well with a high CPU performance.

Here is the code snippet:


glTexImage2D(
GL_TEXTURE_2D,
0,
GL_RGB8,
m_image.width(),
m_image.height(),
0, GL_LUMINANCE,
GL_UNSIGNED_BYTE,
m_image.bits());


Now i change the color table from the image object, that the
color 255 is only used for the red part of the RGB definition.

example:
RGB(255, 0, 0)

Now i have guessed that the color white change to red if i draw the image to the texture but it isn't so.

Is it possible that i have to change also the color table from the 2D texture or could anyone give me a hint to solve this problem.

regards

Treehouse

Shinta
01-05-2010, 01:57 AM
If you only want to use a red-shaded texture try using GL_RED instead of GL_LUMINANCE. If you want more colors, you need GL_COLOR_INDEX, but don't ask me, how to transfer the color palette.

But if you ask me, I wouldn't use indexed images at all. If memory isn't an issue, use truecolor images (16.7 mil. colors) with GL_RGB or GL_BGR_EXT.

hth,
Shinta

dirk103
02-08-2010, 02:13 PM
If you define your texture like this, you can just use blending and glColor4f/3f to specify what colour you want it displayed in.

glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, mbWidth, mbHeight,
0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, m_monoBitmap );

and here's my blending definition:
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);