我为我的游戏编写了一个小型图形引擎,它在一棵树中有多个画布(这些画布基本上代表图层。)每当图层中的某些内容发生变化时,引擎会将受影响的图层标记为“污染”,并且在渲染代码中受影响最低图层通过 drawImage() 复制到其父级,然后复制到其父级,依此类推,直到根图层(屏幕上的画布)。这可能导致每帧多次调用 drawImage(),但也防止重新渲染低于受影响的层。然而,在没有任何变化的帧中,不会发生渲染或 drawImage() 调用,而在只有前景对象移动的帧中,渲染和 drawImage() 调用是最少的。
我想将此与使用多个屏幕画布作为图层进行比较,如本文所述:
http://www.ibm.com/developerworks/library/wa-canvashtml5layering/
在屏幕上的画布方法中,我们在每层的基础上处理渲染,并让浏览器处理在屏幕上正确显示层。从我所做的研究和我读过的所有内容来看,这似乎被普遍认为可能比使用 drawImage() 手动处理更有效。所以我的问题是,浏览器能否比我更有效地确定需要重新渲染的内容,尽管我知道每一帧到底发生了什么变化?
我已经知道这个问题的答案是“双管齐下”。但为了获得准确的数据,我需要实际应用程序,而这需要几个月的时间。到那时,如果我有一个可以接受的方法,我就会有更大的鱼要炸。所以我希望有人一直在这条路上,可以提供一些洞察力。