OSG学习笔记22——设置物体透明,再恢复

这篇博客介绍了在OSG中如何设置物体透明以及之后如何恢复其原始状态。关键步骤包括调整透明度、启用BLEND、关闭光照和深度测试,并保存材质以备恢复。作者在恢复过程中遇到一个OpenGL错误,经过排查发现错误源于重复设置GL_DEPTH为开启状态。解决方法是正确管理光照、混合和材质状态。
摘要由CSDN通过智能技术生成

设置物体透明,trans是透明度的设置,这里如果没有setRenderingHint()虽然看起来是透明的,但模型还是会遮挡其他模型。然后就是BLEND要打开,光照和深度测试要关掉。模型的材质也要事先设置。并将材质保存起来以便恢复的时候调用。

	osg::Material *material = new osg::Material;
	material->setDiffuse(osg::Material::FRONT, osg::Vec4(0.4, 0.4, 0.4, 1.0));
	material->setAmbient(osg::Material::FRONT, osg::Vec4(0.4, 0.4, 0.4, 1.0));
	material->setShininess(osg::Material::FRONT, 90.0);
	scene->getOrCreateStateSet()->setAttribute(material);
	originmaterial = material;
下面是设置透明的代码

void setTransparent(osg::Node *node,float trans)
{
    osg::StateSet * stateset = node->getOrCreateStateSet();

    stateset->setMode(GL_LIGHTING, osg::StateAttribute::OFF | osg::StateAttribute::PROTECTED);
    stateset->setMode(GL_BLEND, osg
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值