[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