查看: 2033|回复: 1

求助:一个alpha混合的问题,急。。。

[复制链接]

该用户从未签到

发表于 2009-2-10 13:26:36 | 显示全部楼层 |阅读模式
2个geode 里面的geometry的顶点信息一样,贴的不同纹理;
node-addChild(geode1);
node-addChild(geode2);
geode1纹理设了alpha0.5,geode2纹理alpha是1;
想做alpha半透明效果。我是这么设状态的,geode1 开启深度测试 function是GLQUAL,其他默认;开启blend混合 源和目标因子分别是 GL_SRC_ALPHA和GL_ONE_MINUS_SRC_ALPHA
geode2默认状态
然后做混合的时候为什么geode1是和背景色做混合,geode2没效果了??
我本来是想让geode1和geode2混合
但是 改成node-addChild(geode2);
node-addChild(geode1);2个节点就混合了。。。。哪位高手可以解释下不???

该用户从未签到

发表于 2009-2-10 20:30:58 | 显示全部楼层
您开启geode2的Blend混合了吗?即是否使用了geode2->getOrCreateStateSet()->setMode( BlendFunc, ON )?

此外混合是有顺序要求的。个人建议使用setRenderBinDetails来严格控制来保证两个节点的渲染先后顺序:
例如,
ss1->setRenderBinDetails( 1, "RenderBin" );
ss2->setRenderBinDetails( 2, "RenderBin" );
保证节点1的渲染肯定在2之前。注意此时这两个节点是在默认场景(顺序号0)之后渲染的。当然简单的程序中不一定要这么做;复杂的程序则建议使用Shader替代混合操作

[ 本帖最后由 array 于 2009-2-10 20:33 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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