目前的creator对画面外的node没有做culling?

版本1.5.1 beta2
放个button在窗口中, drawcall是2.
button在画面外, button的opacity设置为0, drawcall都是2.
只有在button的active为false的时候drawcall为0.

这个跟预期不符啊,至少在画面外的要做culling吧.
是有bug吗?

新版本中应该添加回来了

@zilong 麻烦回复一下

你测试环境是 native?

建议试试最新的 beta1.5.1 beta4

升级了版本,发现button的问题好了.
但是,粒子,spine依然有此问题.
粒子画面内:

粒子画面外:

spine画面内:

spine画面外:

还有什么其它的组件会有这个问题我就没测试了.求解决.

粒子,spine 和 grahpicsNode 目前都还不支持 culling,你自己判断一下这些节点的坐标,然后自己手动去 enable/disable 吧。

收到,谢谢.
目前项目中用spine比较多,根节点移出画面之后,要递归检查所有子节点的组件,然后进行设置.
是要这样吗?

spine 组件你可以扩展一下,写一个通用的逻辑来控制所有的 spine 组件的 culling 呀,不用每次都去递归节点。

好的,我看一下,谢谢.

@子龙山人 1.42版本的scrollview组件有做culling吗

@子龙山人 有PR的方式吗

有做的

看屏幕外,还是有drawcall啊

顶一下啊,有解决的方法吗,屏幕外的scrollview的node,还是有drawcall。 1.4.2的版本

culling 是在 1.5 之后版本才添加的

// helpers
bool Renderer::checkVisibility(const Mat4 &transform, const Size &size)
{
Rect visibleRect;
visibleRect.origin = Director::getInstance()->getVisibleOrigin();
visibleRect.size = Director::getInstance()->getVisibleSize();

Rect rect(0,0, size.width, size.height);
rect = RectApplyTransform(rect, transform);
return rect.intersectsRect(visibleRect);

}

这样改可行吗,1.4.2 @panda

哦,你是说 native 啊。native 有自动 culling,但是 scrollview 外面的属于被剪裁的部分,culling 是没用的,建议你复用 ScrollView 的子节点,只保存显示在视窗內的