Sounds like your image doesn't have an alpha channel. Does BMP even support alpha channels? Try something like TIF or PNG, those support alpha channels. -Paul
> -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of LiCU A > Sent: Wednesday, March 14, 2007 4:29 AM > To: [email protected] > Subject: [osg-users] Alpha texture and tex env combine > > Hello, I'm trying to write a multitexture rendering with 2 > textures: one diffuse and one alpha (grayscale bmp). I'm > using the following code: > > osg::Image* osg_image= new osg::Image; > osg_image->setFileName("diffuse.tga"); > osg::Texture2D* osg_texture = new osg::Texture2D; > osg_texture->setImage(osg_image); // Use the diffuse texture > on the first texture unit. > state->setTextureAttributeAndModes(0, osg_texture, > osg::StateAttribute::ON); > > osg::Image* osg_image2= new osg::Image; > osg_image2->setFileName("mask.bmp"); > osg::Texture2D* osg_texture2 = new osg::Texture2D; // Use the > mask texture as alpha channel only. > osg_texture2->setInternalFormat(GL_ALPHA); > osg_texture2->setImage(osg_image2); > // Use the mask texture on the second texture unit. > state->setTextureAttributeAndModes(1, osg_texture2, > osg::StateAttribute::ON); > > // First texture stage > osg::TexEnvCombine *te = new osg::TexEnvCombine; > // Modulate diffuse texture with vertex color. > te->setCombine_RGB(osg::TexEnvCombine::MODULATE); > te->setSource0_RGB(osg::TexEnvCombine::PREVIOUS); > te->setOperand0_RGB(osg::TexEnvCombine::SRC_COLOR); > te->setSource1_RGB(osg::TexEnvCombine::TEXTURE); > te->setOperand1_RGB(osg::TexEnvCombine::SRC_COLOR); > // Alpha doesn't matter. > te->setCombine_Alpha(osg::TexEnvCombine::REPLACE); > te->setSource0_Alpha(osg::TexEnvCombine::PREVIOUS); > te->setOperand0_Alpha(osg::TexEnvCombine::SRC_ALPHA); > state->setTextureAttribute(0, te); > > // Second texture stage. > osg::TexEnvCombine *te2 = new osg::TexEnvCombine; > te2->setCombine_RGB(osg::TexEnvCombine::MODULATE); > te2->setSource0_RGB(osg::TexEnvCombine::PREVIOUS); > te2->setOperand0_RGB(osg::TexEnvCombine::SRC_COLOR); > te2->setSource1_RGB(osg::TexEnvCombine::TEXTURE); > te2->setOperand1_RGB(osg::TexEnvCombine::SRC_ALPHA); > te2->setCombine_Alpha(osg::TexEnvCombine::REPLACE); > te2->setSource0_Alpha(osg::TexEnvCombine::TEXTURE); > te2->setOperand0_Alpha(osg::TexEnvCombine::SRC_ALPHA); > state->setTextureAttribute(1, te2); > > Now, alpha texture is always white. I've tried to use it as > luminance and it shows correctly but when I use it as alpha > it is always white? Are there another states that needs to be > set or is there an opened issue with alpha textures on OSG? > > > > > ______________________________________________________________ > ______________________ > It's here! Your new message! > Get new email alerts with the free Yahoo! Toolbar. > http://tools.search.yahoo.com/toolbar/features/mail/ > _______________________________________________ > osg-users mailing list > [email protected] > http://openscenegraph.net/mailman/listinfo/osg-users > http://www.openscenegraph.org/ _______________________________________________ osg-users mailing list [email protected] http://openscenegraph.net/mailman/listinfo/osg-users http://www.openscenegraph.org/
