查看: 1571|回复: 4

OSGOcean中如何对海面设置透明度

[复制链接]

该用户从未签到

发表于 2012-12-26 18:40:26 | 显示全部楼层 |阅读模式
用osgOcean生成的海洋,我希望对它设置一下透明度,使得在海洋上方仍可以看到海岛延伸进海洋的一小部分。
可是我用了几种方法,海面透明度都没变化,有哪位大哥可以告知如何设置吗。
代码如下:
osg::StateSet* stateset=_oceanSurface->getOrCreateStateSet();
stateset->setMode(GL_LIGHTING,osg::StateAttribute::OFF|osg::StateAttribute:ROTECTED);
stateset->setMode(GL_BLEND,osg::StateAttribute::ON);
stateset->setMode(GL_DEPTH_TEST,osg::StateAttribute::ON);
stateset->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);
osg::BlendColor *bc=new osg::BlendColor(osg::Vec4(1.0,1.0,1,0));
osg::BlendFunc *bf=new osg::BlendFunc();
stateset->setAttributeAndModes(bf,osg::StateAttribute::ON);
stateset->setAttributeAndModes(bc,osg::StateAttribute::ON);
bf->setSource(osg::BlendFunc::CONSTANT_ALPHA);
bf->setDestination(osg::BlendFunc::ONE_MINUS_CONSTANT_ALPHA);
bc->setConstantColor(osg::Vec4(1,1.0,1.0,0.1));

该用户从未签到

发表于 2012-12-27 09:13:40 | 显示全部楼层
osgocean是完全使用着色器编写的,您需要改写着色器中的相关内容

该用户从未签到

 楼主| 发表于 2012-12-27 10:34:58 | 显示全部楼层
array 发表于 2012-12-27 09:13
osgocean是完全使用着色器编写的,您需要改写着色器中的相关内容

数组大哥,您是说要到oceansurface的cpp文件里面去改吗

该用户从未签到

发表于 2012-12-27 12:04:53 | 显示全部楼层
XXOO.frag OOXX.vert

该用户从未签到

 楼主| 发表于 2012-12-27 13:54:55 | 显示全部楼层
liuzhiyu123 发表于 2012-12-27 12:04
XXOO.frag OOXX.vert

版主可否说的详细些,我该进到哪里修改哪些内容
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表