【求助】关于2.x Mesh的正确用法

背景

尝试用cc.MeshRenderer渲染cc.Meshcc.Mesh通过代码创建。
cc.Mesh对象运行时会不断更新,顶点数也会变化。
附件里是一个简化后的场景,一条由Mesh构成的白线不断往上移动,移动过程中Mesh的顶点数会变化。


TestMeshUpdate.zip (7.7 KB)

现象

当顶点数减少时,上一次绘制的结果会残留一部分在屏幕。如图:

必须在每次更新Mesh前调用Clear(), Init()方法才不会有问题,这相当于销毁整个Mesh重建了,并不合理。在2.4.2,2.4.6都测试过,情况相同。

mesh.clear();
mesh.init(vfmtCustom, vertices.length, true);
this._renderer.mesh = mesh;

问题

上述现象是否符合预期?是不是bug?

顶上去!!

好像是有这个问题,我用2.4.3也会存在这个,mesh里面顶点缓冲区中不会减少的,只能增长,所以我之前解决方法是把后续的用不到的顶点的颜色弄成透明,不渲染出来

1赞

多谢,这个思路是可以的。

活捉摸鱼皮皮 :smiley_cat:

MTMPEOPME70U5_QL`%V}8R5
长度没刷新,严格来说引擎要背锅

治标不治本,白消耗性能

是的,大佬说的对

大佬666,这样能解决了。

同理subDatas[0].vb._numVertices 也改成实际顶点数,可以少提交一些顶点数据。

那么问题来了,引擎组会修复这个问题吗?

有个疑问:这段代码能在原生上生效吗?

不生效 。

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。