Cocos 3D地形Bug,与透明度不兼容——已解决

遇到一个好玩的问题,3D地形上永远无法绘制出3D粒子,呵呵。如图:

terrain的位置为0,0,0,粒子位置0,100,0,按道理粒子应该显示在地形之上吧,但是NO,地形永远显示在粒子之上,覆盖掉粒子的显示的。

究其原因,应该是cocos的terrain的写法,开了而且必须开禁止blend,于是。。。。。。半透明的粒子在terrain范围内就没法blend上去了。

这。。。。。。。。。。我是还没想到怎么解决,感觉这个问题有点想笑啊:877:

再测试了一下,任何node,只要opticy不等于255,在这个地形上就会消失。。。。。。。。。。。那么这地形怎么用呢。。。。。。不支持一切特效么。。。。。

把地形的blend打开不行吗

不行的,打开的话,地形多边形会渲染得叠加得一塌糊涂

我的demo:cocos2dx(纯2d部分)+ogre1.8(纯3d部分)+pu(原版)+UnityEditor(除了发布功能,其他大部分功能非unity3d引擎也可使用),最近听说ogre2.0动画性能提高3x,准备升级,用cocos2dx做3d性能可能会是个大问题。

还有公告板也会被地形挡住

老是开发这种玩具功能,两三个月一个版本,没一个稳定的,只要能显示出来就算一个新版本,自己都没实际用过,还宣传得吊炸天,实际用起来就是一坨翔,把2d的优化好再说行不

— Begin quote from ____

引用第4楼ll73971477于2015-05-10 10:38发表的 :
还有公告板也会被地形挡住 http://www.cocoachina.com/bbs/job.php?action=topost&tid=299924&pid=1303921

— End quote

凡是涉及到透明度变化的,在blend被禁止的情况下,都没法用:12:

修改这个函数:

void Terrain::draw(cocos2d::Renderer *renderer, const cocos2d::Mat4 &transform, uint32_t flags)
开始处加入:
_customCommand.set3D(true);
_customCommand.setTransparent(false);

谢谢指点!!