Hi,
Does anybody know how to make transparent textures in OpenGL without using the glMaterial calls ??? I tried to set the alpha coef with calls to glColor and then drawinmg a texture but that gives nothing at all. The texture is still drawn with full alpha. I am using an alpha plane of 4 bits, the textures are RGBA and I enable blending.
It only seems to work with color drawing not with texture drawing.
You say you enabled blending. Did you specify your blending function as well ? Moreover, if you are trying to achieve some kind of transparency, did you sort your primitives from far to near ?
I must say I am a PC developper so your problem might be a Mac driver issue… Can you post your initializations so that we can have a look ?
Best regards.
Eric
P.S. : unless you think it is a driver issue, you might as well have posted your message in the Beginner or Advanced forum.
I have just re-read your message.
You said you set the transparency using glColor…
With an RGBA texture, you should specify the alpha values in the texture itself.
For example :
GLubyte image[4WidthHeight];
for (i=0;i<Width*Height;i++)
image[i*4+3]=128; // Sets alpha to 128 //
Thanks. That’s what I was thinking but it seemed a bit wasteful memory-wise. When my editor starts up it loads all the textures and creates non transparent OGL textures objects. Now I will probably have to manage textures on a face by face basis since I want to be able to make any texture transparent. So I will have to recreate/destroy transparent textures as I go.
Or I could load all my textures in 2 sets opaque and transparent. That’s a load of textures (around than 130) and loads of memory space taken. I wonder…
Yes I agree with you, this thing is annoying… Perhaps you should post in the Advanced forum to see if someone comes with a brilliant idea but I think there is no workaround…
Originally posted by BANE:
Or I could load all my textures in 2 sets opaque and transparent. That’s a load of textures (around than 130) and loads of memory space taken. I wonder…
You can load a transparent texture from a RGBA-image like this:
Does that work? I’ve had problems doing that (you get extra rows of data which mess up the image). You can load RGB images that way, but not RGBA, AFAIK. Correct me if I’m wrong.
I have never had any problem with using the GL_RGBA format. You just need to make sure you requested a alpha plane in AGL. I load all my textures this way a per the Red Book .
Dan.
[This message has been edited by BANE (edited 05-26-2000).]
Originally posted by Morgan:
[b]I think I didn’t say that right. When I try to load an RGBA as an RGB it comes out all messed up, is that what you were answering to?
Morgan[/b]
Yep! I never tried that either. I think you are right. I do not think this should work.