私がしようとしているのは、キャンバス要素に非常に多くのズーム機能を持つゲームを作成することです。私は、ビットマップイメージの高性能を利用して、実行時にプログラムで作成できるという点で、ベクトルグラフィックスが持つ利点を活用したいと考えています。HTMLキャンバス要素のベクターの利点とビットマップの組み合わせ - どのように?
私がやりたいことは、ゲーム "スプライト"の最初のフレームの画像をプログラムで作成することです。これはベクトル画像になります。しかし、最初のフレームの後に、私は画像を描画する上でCPUサイクルを無駄にしたくありません。私はそのズームレベルのビットマップ/高性能画像としてキャッシュしたいと思います。
これに続いて、ユーザーが20%以上ズームすると、より詳細な詳細ベクトル画像で画像を再描画します。上記のように、このベクトル画像はキャッシュされ、最適化される。
あなたがここに見ることができるように、これはかなり基本的な宇宙船だろう..私は最初にベクトルとして、プログラムでそれをレンダリングします。..ラスターそれは私が推測しますか?目標はCPUの無駄を避けることです。
ユーザーがズームインした場合...
同じ形状の新たなベクトル画像は、細部のはるかに高いレベルにもかかわらず、描画されることになります。これは基本的にレベル詳細システムです。この場合も、最初のプログラムによる描画の後、最大限のパフォーマンスを得るためにイメージを「ラスター化」します。
誰かがHTMLキャンバス内でこれを実現するために必要なツールについて知っていますか? (ゲームの残りはキャンバス要素内で実行されます..)
ありがとう、あなたの考えに感謝します。
**編集:私はSVG経由でイメージをレンダリングするルートをプログラムに追加し、drawimage()を使用してそのPNGファイルをキャンバスにプッシュするルートを追加したかったでしょうか?似たような?うーん...
PNGに変換する必要はありません。ほとんどのブラウザは 'drawImage'でSVGを受け入れます。 – robertc
アイデアは、初期フレームをSVGとしてレンダリングし、再利用できるPNGに変換することです。 SVGイメージを最初に作成したSVGイメージの「ビットマップキャッシング」を可能にするブラウザもあることがわかっていますが、実際には、サイズやアルファに変更があるまでは、ビットマップとしてキャッシュされます。しかし、私はこのキャッシングに対してどれだけのコントロールを持っているのかは分かりません。また、BMP画像は圧縮されたPNGに比べて膨大です。後で再利用する代わりにPNGをキャッシュしたいと思います。 – Mavorus