等一个官方回复,多摄像头能否实现分层合批 @jare。好多小伙伴试了都不行。
同样试了不行
关注结果中~
大佬,在CocosDashboard中下载到的各种2.3.x版本中drawcall都不会减少。请问大佬这是bug还是已经没这功能了?如果只是暂时的bug,我就不修改代码等大佬们修复。不然就得修改实现了
如果你用的是散图那么开启动态合批那么在native 和小游戏平台需要自己主动强制开启合批功能
我自己试了一下也没有效果,难道是我的姿势不对尴尬
多camera有没有额外消耗。
creator我没有发现问题。
我在2dx里面明显感觉到新增camera掉帧严重。
只针对你发的这话做一点请教……
当我没说过吧哈哈,camera 目前起不到优化作用。
嗯,确实不行
感谢大佬分享
我什么的OK,就Mask不起效
_proto._children = function (node) {
if ( node._platRender ) {
return this._next._func(node);
}
let cullingMask = _cullingMask;
let batcher = _batcher;
let parentOpacity = batcher.parentOpacity;
let opacity = (batcher.parentOpacity *= (node._opacity / 255));
let worldTransformFlag = batcher.worldMatDirty ? WORLD_TRANSFORM : 0;
let worldOpacityFlag = batcher.parentOpacityDirty ? OPACITY_COLOR : 0;
let worldDirtyFlag = worldTransformFlag | worldOpacityFlag;
if ( node._parentFlatRender )
{
let children = node.allChildren();
for (let i = 0, l = children.length; i < l; i++) {
let c = children[i];
// Advance the modification of the flag to avoid node attribute modification is invalid when opacity === 0.
c._renderFlag |= worldDirtyFlag;
if (!c._activeInHierarchy || c._opacity === 0) continue;
if(c.childrenCount > 0) {
c._renderFlag &= ~CHILDREN;
}
_cullingMask = c._cullingMask = c.groupIndex === 0 ? cullingMask : 1 << c.groupIndex;
// TODO: Maybe has better way to implement cascade opacity
let colorVal = c._color._val;
c._color._fastSetA(c._opacity * opacity);
flows[c._renderFlag]._func(c);
c._color._val = colorVal;
if(c.childrenCount > 0) {
c._renderFlag |= CHILDREN;
}
}
}
else
{
let children = node._children;
for (let i = 0, l = children.length; i < l; i++) {
let c = children[i];
// Advance the modification of the flag to avoid node attribute modification is invalid when opacity === 0.
c._renderFlag |= worldDirtyFlag;
if (!c._activeInHierarchy || c._opacity === 0) continue;
_cullingMask = c._cullingMask = c.groupIndex === 0 ? cullingMask : 1 << c.groupIndex;
// TODO: Maybe has better way to implement cascade opacity
let colorVal = c._color._val;
c._color._fastSetA(c._opacity * opacity);
flows[c._renderFlag]._func(c);
c._color._val = colorVal;
}
batcher.parentOpacity = parentOpacity;
}
this._next._func(node);
};
有什么招数
mask如果在组件内部,是没法处理的。因为mask是依赖自身的render/postRender实现stencil test,对其子节点做遮罩,不适合分层渲染场景。
mask如果在组件外部,理论上不会影响效果。
感觉能关注这个问题的都是爱学习的好同学哈哈,我在这发个招聘广告,独立工作室招人,已经和头条、B站展开合作,资金充沛,潜力巨大,工作氛围好,福利佳,关键是双休哦…(哈哈作为游戏公司双休竟然也是亮点了),项目为重度二次元卡牌类。
现有职位两名:
中级creator工程师(25k-30k)
职责:城建、世界大地图等复杂系统开发,sdk接入等,有较强的性能意识,对工作质量有较高追求,良好的自驱性
高级(资深)creator工程师(30k-35k)
职责:creator引擎优化、定制、升级,要求对引擎有深入了解,精通引擎底层原理,优化开发工具链,提高开发效率,进行突破性技术调研,从技术角度提高游戏品质,提高表现上限
地点:北京中关村知春路附近
以上只是大概基本情况,求贤若渴,有意者速速联系:1ob_vxn5rvr58b@dingtalk.com
native 怎么实现好呢?
看了2.4.3的源码,renderflow和RenderComponent的函数都是_checkBacth。
而不是_checkBatch,是不是官方单词拼错了?
牛大发了,,,必须给大佬顶一下
通过多camera处理确实是一个很好的方案,引起有考虑支持吗 
战略mark