PDA

View Full Version : Make color transparent



Hylke Donker
03-22-2005, 09:27 AM
Hello
I've loaded some pictures and used them as textures.
But I want to look through one color in my hall scene(the color(1.0, 0.0, 1.0)), so i can see the underlieing texture.
I think it should be done with blending and the alpha value, but I have no idea how to do it(the files that I've loaded don't support alpha values).
If anyone knows how to do it, please let me know.
Hylke

Aeluned
03-22-2005, 10:28 AM
The only thing I can think of is using a fragment program to filter out fragments of that color.

In the fragment program you test the RGB value, it it's 1.0,0.0,1.0 you discard the fragment.

You're right though, you should really use textures with an alpha channel.

jide
03-22-2005, 10:39 AM
I think too that RGBA textures should be best.

One solution consists on changing the format of your picture and do the work in order you color to be transparent (gimp can do that). TGA is a good format to manage transparency.

Another solution would consists on modifying or adding new functions to your texture loader so that you can do the manipulations you want.

Hylke Donker
03-22-2005, 10:52 AM
Ok, thank your for your replies.
But the reason i did not used a file with alpha values support was i did not get the effect i wanted.
I've loaded the image using QTs QImage class, but when i display the texture it's black where it should be transparent(the color of the QUAD is (0.0, 0.0, 0.0, 0.0) that should be completly transparent).

Aeluned
03-22-2005, 12:12 PM
If the surface you're mapping your texture onto has an alpha of 0.0 you won't see anything.

try using a color of (1.0,1.0,1.0,1.0) and using GL_MODULATE to do your texturing for starters.

dvm
03-22-2005, 02:30 PM
also, have you enabled blending and defined a blending function?
use glEnable(GL_BLEND);
and check out manual on glBlendFunc();

Hylke Donker
03-23-2005, 05:22 AM
Ok, thanx
I've now enabled blending, and have set the texture combining thing to GL_MODULATE, changed the quad color to (1.0, 1.0, 1.0, 1.0) and my blending function looks like this:

glBlendFunc(GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR);But when i run the program, everything is much lighter and looks kinda different.
So how can i have the original colors but still a transparent picture?
Thanx Hylke

dvm
03-23-2005, 05:30 AM
Try using this for blending:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
might be what u want. Also remember to turn off blending when you don't need it (and it's also good practice to draw your transparent objects last in your display function)

jide
03-23-2005, 05:40 AM
Try GL_DECAL instead of GL_MODULATE.

Hylke Donker
03-23-2005, 06:44 AM
that GL_SRC_ALPHA and GL_ONE_MINUS_SRC_ALPHA did the trick.
Thanx Hylke