Javascript/HTML5画布重画

Javascript/HTML5画布重画,javascript,html5-canvas,Javascript,Html5 Canvas,我有一个平均大小的“世界”,一个包含可见对象的二维平面。如果全部显示,它的尺寸将至少约为2000x2000像素。但是,只有一部分被绘制到称为“视图”的画布(640x480)中的屏幕中。用户可以在世界各地移动视图 我目前使用的策略是在内存画布中以相同大小(640x480)绘制可见对象,然后在每次移动时将其重新绘制到视图中 但是,世界、对象及其位置不会改变。实际上,它可以被认为是一个单一的大图像 使用2000x2000(或更多)缓冲区画布,然后将其一部分绘制到可见画布是否更好?或者我应该坚持我目前的

我有一个平均大小的“世界”,一个包含可见对象的二维平面。如果全部显示,它的尺寸将至少约为2000x2000像素。但是,只有一部分被绘制到称为“视图”的画布(640x480)中的屏幕中。用户可以在世界各地移动视图

我目前使用的策略是在内存画布中以相同大小(640x480)绘制可见对象,然后在每次移动时将其重新绘制到视图中

但是,世界、对象及其位置不会改变。实际上,它可以被认为是一个单一的大图像


使用2000x2000(或更多)缓冲区画布,然后将其一部分绘制到可见画布是否更好?或者我应该坚持我目前的策略:使用640x280缓冲区,只绘制可见对象?

假设世界每一帧都会更新。这意味着世界需要在每一帧重新渲染,因为位置可能已经改变

从性能角度来看,我宁愿让游戏循环检查哪些对象是可见的,并且只绘制这些对象,而不是渲染整个世界并拾取640x480像素的区域

根据您的实现,如果视图(相机)的移动相当快,您可能还希望绘制“几乎”可见的对象

我建议你做一些类似的事情:

  • 拥有一块640x480画布
  • 虚拟世界大小为2000x2000像素
  • 让游戏将所有内容渲染到上下文中,然后将上下文转换到摄影机位置,然后从该点开始渲染640x480像素
  • 然后,您的“世界”将是静态的,但摄影机将四处移动并“查看”要渲染的点