查看: 2308|回复: 8

关于透明的问题

[复制链接]

该用户从未签到

发表于 2012-8-13 16:53:44 | 显示全部楼层 |阅读模式
未命名5.jpg

实现代码
  1.         osg::Vec4 color1(1,1,1, tmd );                                                                                                // 自定义的混合因子
  2.         osg::BlendFunc *blendFunc1 = new osg::BlendFunc();                                                        //
  3.         osg::BlendColor *blendColor1= new osg::BlendColor(color1);                                        // 设置自定义的混合因子
  4.         blendFunc1->setSource(osg::BlendFunc::CONSTANT_ALPHA);                                                // 设置源混合因子的混合方式
  5.         blendFunc1->setDestination(                                                                                                        // 设置目标混合因子的混合方式
  6.                 osg::BlendFunc::ONE_MINUS_CONSTANT_ALPHA);       

  7.         node->getOrCreateStateSet()->setAttributeAndModes(                                                        // 开启混合
  8.                 blendFunc1,osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE);
  9.         node->getOrCreateStateSet()->setAttributeAndModes(                                                        // 开启颜色混合
  10.                 blendColor1,osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE);
  11.         node->getOrCreateStateSet()->setRenderBinDetails(RenderBin,
  12.                 "RenderBin");
复制代码
为什么重叠的地方想方面图片的样子, 一块一块的?


有什么好的实现方法吗?

该用户从未签到

发表于 2012-8-13 20:47:18 | 显示全部楼层
如果关闭深度测试的话,应该是可以的;如果不想关闭的话,则需要自己实现深度排序算法,你可以搜索一下相关帖子;其实我蛮希望osg帮我们实现的

该用户从未签到

发表于 2012-8-14 07:49:33 | 显示全部楼层
setRenderBinHint

该用户从未签到

 楼主| 发表于 2012-8-14 08:38:19 | 显示全部楼层
liuzhiyu123 发表于 2012-8-14 07:49
setRenderBinHint

是不是这个函数啊setRenderBinDetails


你说的那个函数没找到, 我用的osg3.0.

该用户从未签到

发表于 2012-8-14 09:00:34 | 显示全部楼层
都可以

该用户从未签到

发表于 2012-8-14 09:01:10 | 显示全部楼层
TRANSPARENT_BIN

该用户从未签到

 楼主| 发表于 2012-8-14 09:18:46 | 显示全部楼层
liuzhiyu123 发表于 2012-8-14 09:01
TRANSPARENT_BIN


TRANSPARENT_BIN,不是完全透明了, 我上面的代码是用混合做的半透明。

该用户从未签到

发表于 2012-8-14 16:25:14 | 显示全部楼层
我看不清您在屏幕上画了个什么,是否是一个存在自遮挡的物体?比如一个球体什么的,这种物体是不能用OpenGL传统的透明排序和融合的方法处理的,必须用到depth peeling等一些高级的技术,osg有这样的例子。但是如果您不想自惹麻烦的话,最好还是将这个对象切开为多个node并且分别设置TRANSPARENT_BIN,避免自遮挡的情况

该用户从未签到

 楼主| 发表于 2012-8-21 17:29:56 | 显示全部楼层
array 发表于 2012-8-14 16:25
我看不清您在屏幕上画了个什么,是否是一个存在自遮挡的物体?比如一个球体什么的,这种物体是不能用OpenGL ...

还是先不惹麻烦了,是不是osgoit这个事例, 以后在去碰这个雷去。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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