[osg-users] Drawing a partially transparent image in a quad

L. Voerman l.voerman at rug.nl
Tue Jul 3 01:04:29 PDT 2018


Hi ,
I can't see what you are doing wrong, other guesses:
- you moved all quads into the transparent bin, and render them all at the
same depth
- you compress the images to textures without transparency
- you are looking at a mipmap where the alpha values are interpolated as
well.

for testing you could add
osg::AlphaFunc *alphaTest = new osg::AlphaFunc(osg::AlphaFunc::GREATER,
0.5f);
qss.setAttributeAndModes(alphaTest);
to discard (not blend) the fragments with an alpha value below 0.5

as you seem to have problems in your data, I would strongly recommend to
write out the data to file (.osgt will do) and look at it in the osgviewer.
Laurens.

On Mon, Jul 2, 2018 at 6:25 PM Jose Pedro Canilho <jpc_ace at hotmail.com>
wrote:

> Hi Laurens.
> Thank you for your reply!
>
> I've actually already had a black background color set in my camera
> ("setClearColor( 0,0,0,1 )").
>
> I've tried your rendering hint solution, but unfortunately it didn't solve
> my problem. Do I need to call any state set updating function after setting
> the rendering hint?
>
> I've also double checked for the correct format in pretty much any place I
> can think of. I've checked that my raw images are indeed 8bit RGBA. When I
> construct my osg::image, I use the following:
>
>
> osg::ref_ptr<osg::Image> img = new osg::Image();
> img->setImage(width,height,1
> ,GL_RGBA8,GL_RGBA,GL_UNSIGNED_BYTE,dataPtr,osg::Image::NO_DELETE);
>
>
> I believe these format options are correct, since I'm able to create other
> RGBA images correctly.
>
> Thanks once again.
>
> José
> ------------------------------
> *From:* osg-users <osg-users-bounces at lists.openscenegraph.org> on behalf
> of L. Voerman <l.voerman at rug.nl>
> *Sent:* Monday, July 2, 2018 3:13 PM
> *To:* OpenSceneGraph Users
> *Subject:* Re: [osg-users] Drawing a partially transparent image in a quad
>
>
> Hi Jose,
> You may have a black background, with the blending actually (partly)
> working, change
> getCamera()->setClearColor( osg::Vec4(r,g,b,a) );
> to see if that's the case.
> the stuff that needs blending needs to be rendered after the background,
> normally done with:
> stateset->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);
>
> If it's not blending at all I would recommend you to check if your image
> did not end up as an RGB image instead of RGBA.
> Regards, Laurens.
>
>
>
>
> On Mon, Jul 2, 2018 at 11:28 AM Jose Pedro Canilho <jpc_ace at hotmail.com>
> wrote:
>
> Hi everyone!
>
> I've been battling with this issue for a couple of days and could really
> use some assistance. I'm fairly new to OSG (and 3D rendering in general) so
> I might be doing some rookie mistake.
>
> In my program, I draw several quads, each containing a RGBA squared image.
>
> At one point, I'm required to draw a new image on top of the existent
> images. This new image is also squared, but it is partially transparent
> (i.e., several pixels have the RGBA value of 0,0,0,0). At the moment, these
> pixels are being rendered black instead of transparent, and thus are
> mistakenly covering some regions of the background images/quads.
>
> After quite a few searches online, I was pointed in the direction of the
> GL_BLEND macro and blend functions. I tried to enable blending for the new
> image/quad:
> auto qss = quad->getOrCreateStateSet();
> qss->setMode(GL_BLEND, osg::StateAttribute::ON)
>
>
> but to no avail.
>
> I also tried to attach a blend function to the quad, like such:
>
> osg::BlendFunc* blendFunc = new osg::BlendFunc(osg::BlendFunc::SRC_ALPHA,
> osg::BlendFunc::ONE_MINUS_SRC_ALPHA );
> qss->setAttributeAndModes(blendFunc);
>
> but that didn't work either.
>
>
> Are there any other issues that I might be overlooking here?
>
>
> Thanks in advance.
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20180703/90415b72/attachment.html>


More information about the osg-users mailing list