[Gambas-user] gb3: gb.opengl will not render alpha channel of 2D texture

Benoît Minisini gambas at ...1...
Sat Jul 30 23:44:07 CEST 2011


> Le Samedi 30 Juillet 2011 00:19:41, Kevin Fishburne a écrit :
> > I've been researching this for hours and nothing I try works. The image
> > used for the texture has an alpha channel, but it is displayed as black
> > instead of transparent. I'm starting to think that the line:
> > 
> > Gl.TexImage2D(t1)
> > 
> > isn't passing the presence of an alpha channel to OpenGL, but that's
> > just a guess. Normally you specify the image format there, but those
> > parameters aren't supported yet in the gb3 implementation.
> > 
> > The project is attached. You can move the little wizard around with the
> > ASDW keys and rotate with the QE keys. Any help appreciated...I'm going
> > crazy and am calling it quits for the night
> 
> This is what i do in the sdl component to get alpha blending:
> 
> glEnable(GL_BLEND);
> glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
> 
> So it should be in gambas3 code:
> 
> Gl.Enable(Gl.GL_BLEND)
> Gl.BlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA)
> 
> ++
> 

If, in GltextureMapping.c:238:

	glTexImage2D(GL_TEXTURE_2D, VARGOPT(Level, 0), 3, image->width, 
		image->height, VARGOPT(Border, 0), format, GL_UNSIGNED_BYTE, 
		image->data);

I replace the "3" by "4", as it is in line 225, I get the transparency.

According to the documentation, this number is the number of color components 
in the texture, which should be 4 for RGBA.

I suggest that this number should be 3 if the image format is RGB or BGR, and 
4 if the image format is RGBA, RGBX, BGRA, tec.

Another point. I opened the file GLUtextureImage.c (searching for 
GL.TexImage2D), and I noticed that GLUBUILD1DMIPMAPS use IMAGE_get to read its 
image argument (which does error checking), but not GLUBUILD2DMIPMAPS, which 
should lead to possible segfaults...

Laurent, I let you modify the code (if I'm not wrong) :-)

-- 
Benoît Minisini




More information about the User mailing list