void VRMLAppearanceBinder::finish(VRMLToOSGAction *) { ChunkMaterialPtr pChunkMat = ChunkMaterialPtr::dcast(_pFieldContainer); TextureChunkPtr pTexChunk = TextureChunkPtr::dcast(pChunkMat->find(TextureChunk::getClassType())); MaterialChunkPtr pMatChunk = MaterialChunkPtr::dcast( pChunkMat->find(MaterialChunk::getClassType())); if(pTexChunk != NullFC) { beginEditCP(pTexChunk, TextureChunk::EnvModeFieldMask); { if(pMatChunk == NullFC) { pTexChunk->setEnvMode(GL_REPLACE); } else { pTexChunk->setEnvMode(GL_MODULATE); } } endEditCP (pTexChunk, TextureChunk::EnvModeFieldMask); } if(pChunkMat != NullFC && (pChunkMat->isTransparent() == true || _has_alpha)) { BlendChunkPtr pBlendChunk = OSG::BlendChunk::create(); beginEditCP(pBlendChunk, BlendChunk::SrcFactorFieldMask | BlendChunk::DestFactorFieldMask); { pBlendChunk->setSrcFactor (GL_SRC_ALPHA); pBlendChunk->setDestFactor(GL_ONE_MINUS_SRC_ALPHA); } endEditCP (pBlendChunk, BlendChunk::SrcFactorFieldMask | BlendChunk::DestFactorFieldMask); beginEditCP(pChunkMat, ChunkMaterial::ChunksFieldMask); { pChunkMat->addChunk(pBlendChunk); } endEditCP (pChunkMat, ChunkMaterial::ChunksFieldMask); } }