私はJava 2Dゲームにしばらく取り組んでいます。これは、ピクセル (整数) の配列を持つラスター グラフィック システムです。
private BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();
次に、整数の配列を個別に作成し、(.png などの外部画像ファイルからレンダリングされた) 画面オブジェクトを使用して操作し、その配列をメインの配列にコピーして、画面に投影します。繰り返しで配列をコピーする方法を使用しても、パフォーマンスに違いは見られませんでした (実際には期待していませんでした)。とにかく、グラフィックスはうまくレンダリングされ、ゲームは順調に進んでいます.
ただし、これは非常に CPU を集中的に使用することがわかりました。アクティビティ モニターで、アプリケーションが CPU を 100% 以上使用していると表示されます。これは明らかに、更新ごとにピクセル配列 (76k 整数) を反復処理しているためです (1 秒あたり 60 回)。
私は教育目的でこの手法を選択しました。これは個人的なプロジェクトであり、単に Java グラフィックスについての洞察を得たかっただけです。私は決して、このレンダリング技術と結婚しているわけではありません。
私の質問は、関連する 3 つの部分で構成されています...
- 明らかに、これを行うより良い方法があります。どのライブラリ/フレームワークがそれをより良くしますか?
- これらのライブラリは、本質的に同じこと (ピクセルをループすること) をより効率的な方法で行うでしょうか?
- 外部ツールを使用せずにこの手法を最適化する方法はありますか?それとも価値がないだけですか?