Javascript Html画布1600x1200屏幕撕裂
我见过一些关于这个问题的问题,但是他们都已经三岁了,通常最后都会说还没有太多的解决办法,所以我想知道是否有什么改变了 我目前正在做一个游戏,它以每秒60次的间隔绘制在画布上。它在我的iphone和PC上工作得很好,它有一个非常好的图形卡,但我现在正在一个装有intel i3 graphics的Thinkcentre上试用它,我注意到一些巨大的屏幕撕裂: -作为一个静物,它更难被注意到Javascript Html画布1600x1200屏幕撕裂,javascript,html,canvas,windows-8,Javascript,Html,Canvas,Windows 8,我见过一些关于这个问题的问题,但是他们都已经三岁了,通常最后都会说还没有太多的解决办法,所以我想知道是否有什么改变了 我目前正在做一个游戏,它以每秒60次的间隔绘制在画布上。它在我的iphone和PC上工作得很好,它有一个非常好的图形卡,但我现在正在一个装有intel i3 graphics的Thinkcentre上试用它,我注意到一些巨大的屏幕撕裂: -作为一个静物,它更难被注意到 我只是想知道是否有任何方法可以减少这种情况,或者轻松启用垂直同步。如果没有,我可以在游戏的windows 8应用
我只是想知道是否有任何方法可以减少这种情况,或者轻松启用垂直同步。如果没有,我可以在游戏的windows 8应用程序端口中做些什么吗?您使用的是requestAnimationFrame(RAF)吗?RAF将进行v同步,但setTimeout/setInterval不会 此外,由于30fps足以让用户看到平滑的运动,将60fps分成两个交替部分如何:
- 一帧期间的“计算/更新”(无图纸)
- 然后在下一帧中绘制所有图形
- 如果当前帧在下次刷新之前未完全渲染
- RAF将延迟当前帧的绘制,直到下一次屏幕刷新
- 这种延迟可以减少撕裂
- 将其保存在单独的进程中,如setInterval
- 将其移动到requestAnimationFrame中
- 将其移动到web workers中(工作在与UI线程分离的后台线程上完成)
祝你的游戏好运:)那游戏看起来不错badass@cgatian谢谢:)pilower.com这可能是实现requestAnimationFrame的一个很好的起点。@bvx89:同意……我也喜欢这个经典链接,它进一步解释了为什么RAF通常比setInterval/setTimeout更好:太好了,但是我不太明白你说的计算是什么意思,我有一个完全独立的时间间隔,也运行在60帧上,可以进行所有的游戏计算,比如物理等等,我这样做是为了在不影响游戏的情况下更容易地改变抽签率。你检查了requestAnimationFrame(RAF)了吗?RAF结构可能有助于您进行删除,因为回调是相对于浏览器刷新调用的。我所说的“计算”实际上是指在绘制之前必须进行的任何物理计算。我已经更新了关于RAF.OP的更多细节:WebWorkers+类型化数组(因为它们可以作为引用而不是副本传递)可能是进行物理计算的好方法。