我正在研究使用HTML的画布作为游戏显示媒介的可能性。举个例子,我需要从许多等角瓦片中构建游戏环境。当然,在2D工作意味着它们必须以矩形包裹的方式出现,因此瓦片之间存在大量重叠。
我已经很老了,自然解决这个问题的方法是调用BitBltMasked。哦,等等,HTML画布没有像BitBlt那么简单且令人愉悦的东西。似乎将像素数据倒入画布的唯一方法要么使用drawImage(),但它没有有用的绘图模式可以忽略alpha通道,要么使用ImageData对象,该对象将图像数据存储在数组中...每次都会对边界进行检查,因此速度非常慢。
好吧,这更像是牢骚而不是一个问题(W3C喜欢的东西通常会引起我的不满),但我真正想知道的是如何快速绘制到画布上?我发现很难放弃这样一个感觉,即每秒执行数百个保留alpha通道的drawImages()本质上是罪恶的,并可能使我的应用程序在许多浏览器中运行缓慢。另一方面,实现BitBlt的唯一途径是严重依赖于浏览器使用类似热点的执行技术来快速运行它。
是否有任何方法可以在每种可能的实现中快速绘制,还是我必须忘记性能?
drawImage()
没有有用的绘图模式。虽然这是一个老问题,但现在有一个globalCompositeOperation
属性可以改变绘制模式。它可能会很有用。 - Sebastien C.