我想要做的是創建一個遊戲,在畫布元素上具有極大的縮放能力。我想利用矢量圖形具有的優點,即能夠在運行時以編程方式創建,並具有高性能的位圖圖像。在HTML畫布元素中將矢量優勢與位圖相結合 - 如何?
我想要做的是以編程方式創建遊戲「精靈」的第一幀圖像......這將是一個矢量圖像。雖然在第一幀之後,我不想在繪製圖像時不斷浪費CPU週期,但是我想將它緩存爲該縮放級別的位圖/高性能圖像。
在此之後,如果用戶放大> 20%,則我會用更高級別的細節矢量圖像重新繪製圖像。如上所述,這個矢量圖像將被緩存和優化。
正如你可以在這裏看到,這將是一個非常基本的太空飛船。我會先使其編程作爲載體,然後..光柵它我猜?目標是避免浪費CPU。
如果用戶放大...
相同形狀的一種新的矢量圖像將被繪製,儘管詳細的高得多的水平。這基本上是一個詳細程度系統。在這種情況下,在最初的程序化繪圖之後,我會「光柵化」圖像以獲得最佳性能。
有沒有人有什麼工具我需要做到這一點在HTML畫布內實現的想法? (遊戲的其餘部分將在畫布元素內部運行..)
非常感謝您的想法。
**編輯:我想添加...也許通過SVG(編程)渲染圖像的路線,然後使用drawimage()將該png文件推入畫布可能會提供一些成功?相似的東西?嗯...
您不需要轉換爲PNG。大多數瀏覽器都會在'drawImage'中接受一個SVG。 – robertc
這個想法是將最初的框架渲染爲SVG,然後轉換成我們可以重用的PNG。 SVG確實可以直接在瀏覽器中使用,但是如果渲染每一幀,它會產生更大的CPU成本...我知道某些瀏覽器允許SVG圖像的「位圖緩存」,其中最初創建SVG圖像之後,它將被緩存爲位圖,直到大小或alpha發生變化..但是我不知道我對這個緩存有多少控制。而且,與壓縮的PNG相比,BMP圖像是巨大的。想要緩存一個PNG而不是稍後重用。 – Mavorus