mark!!
mark!!
遇到个手机端web的渲染时间问题,切换到后台再回来 ,游戏内的逻辑时间与渲染时间不一致了,我尝试用时间补偿机制也不行,在电脑端就能正常补偿时间[苦涩]
把cc_time替换为你自己的变量,每帧更新,和业务逻辑保持时间同步
我也用的自定义渲染,传的顶点着色器属性数据批量做shader效果,里面的一个效果是要用cc_time.x 所以要再顶点传入一个开始时间来做,电脑端传入时间和切换暂停恢复能补偿中间缺失的时间,手机web端就无法补时间,只有切后台暂停恢复时有这个问题,我使用逻辑时间和渲染时间做的差值,这个情况怎么能把时间正常补时呢?
如果每帧传时间就会打断合批,我shader里在顶点传不同的数据就会渲染不同的效果
可以确认下cc_time具体是怎么算的
https://github.com/search?q=repo%3Acocos%2Fcocos-engine%20cc_time&type=code
如果多端效果不一致,可以不用cc_time,自己在材质里加一个uniform变量作为准确的时间。
那在顶点传入固定时间的话shader运行时按照时间累计去变化这个效果要怎么实现呢?哪个变量是固定累加的呢
你可以在顶点属性里传入特效开始时间t0,再每帧更新材质的一个uniform变量表示当前时间t,shader里用t-t0就是特效经过的时间了。只不过之前t是用cc_time.x,现在用你自己定义的时间,这样来绕过平台不一致问题。
如果每帧执行setProperty去改时间的话就会打断合批,所以我才用的这个自定义渲染合批通过顶点传数据的
没其他方法保证这个时间么,目前测得就是手机端web有这个问题,不切换后台回来就没事
我理解你应该共享材质才能合批,在这个基础上给共享材质设置uniform不会断合批。
图片一样,材质一样,不一样的是在顶点传入不同类型,渲染的形状不一样,再设置uniform的话就会断合批了
确实不会打断合批了,感谢大佬
好像还是不行,只要传入的时间不一致合批就会断了。。
为什么时间会不一致,这个是全局的时间。另外材质用的同一个共享材质还是复制了几份?材质属性都一样用同一个就好了。
显示这个shader效果不是同一时间一起显示的,这样,传入的时间就会导致无法合批了,数量一多dc也就上去了