Java で 2D ゲーム開発を行う場合、ほとんどのチュートリアルでは、レンダリングするバッファ戦略を作成します。これは完全に理にかなっています。ただし、実際のグラフィックスをバッファに描画する方法が歪んでいるようです。
一部のチュートリアルでは、バッファリングされた画像を作成してから、個々のピクセルの色を表す整数配列を作成します。
private BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();
Graphics g = bs.getDrawGraphics();
g.setColor(new Color(0x556B2F));
g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(image, 0, 0, getWidth(), getHeight(), null);
ただし、他のいくつかのチュートリアルでは、バッファーされた画像を作成せず、ピクセルを int 配列に描画し、代わりに BufferStrategy の Graphics コンポーネントを使用して画像をバッファーに直接描画します。
Graphics g = bs.getDrawGraphics();
g.setColor(new Color(0x556B2F));
g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(testImage.image, x*128, y*128, 128, 128, null);
なぜ int 配列全体を作成してから描画するのか疑問に思っていました。これには、長方形、ストレッチ、透明度などの実装に多くの作業が必要です。バッファ戦略のグラフィックス コンポーネントには、簡単に呼び出すことができるメソッドが既にあります。int 配列を使用すると、パフォーマンスが大幅に向上しますか?
私はこれを何時間も調べましたが、私が見たすべてのサイトは、彼らが何をしているのかを説明しているだけで、なぜそのようにすることを選んだのかについては説明していません.