【发布时间】:2012-02-13 18:04:15
【问题描述】:
我要做的是创建一个在画布元素上具有极大缩放能力的游戏。我想利用矢量图的优势,即能够在运行时以编程方式创建,以及位图图像的高性能。
我想做的是以编程方式创建游戏“精灵”的第一帧图像......这将是一个矢量图像。不过,在第一帧之后,我不想继续浪费 CPU 周期来绘制图像。我想将其缓存为该缩放级别的位图/高性能图像。
在此之后,如果用户放大 >20%,我会用更高级别的细节矢量图像重新绘制图像。如上,这个矢量图会被缓存和优化。
正如您在此处看到的,这将是一艘非常基本的太空船。我会首先以编程方式将其渲染为矢量,然后.. 栅格化我猜?目标是避免浪费 CPU。
如果用户放大...
将绘制一个相同形状的新矢量图像,尽管具有更高级别的细节。这基本上是一个细节级别系统。同样在这种情况下,在初始编程绘制之后,我会“光栅化”图像以获得最佳性能。
有没有人知道我需要哪些工具才能在 HTML 画布中实现这一点? (游戏的其余部分将在画布元素内运行..)
非常感谢您的想法。
**编辑:我想添加...也许通过SVG(以编程方式)渲染图像,然后使用drawimage()将该png文件推送到画布中,可能会取得一些成功?相似的东西?嗯……
【问题讨论】:
-
您不需要转换为 PNG。大多数浏览器将接受
drawImage中的 SVG。 -
这个想法是将初始帧渲染为 SVG,然后转换为我们可以重用的 PNG。 SVG 确实可以直接在浏览器中使用,但是如果每帧都渲染它会产生更大的 CPU 成本……我知道有些浏览器允许对 SVG 图像进行“位图缓存”,然后最初创建 SVG 图像,它将被缓存为位图,直到大小或 alpha 发生变化。但是我不确定我对此缓存有多少控制权。此外,与压缩的 PNG 相比,BMP 图像非常庞大。想要缓存一个 PNG 以供以后重用。
标签: javascript html graphics svg