2

最適なパフォーマンスを維持しながら、タイル ベースの照明システムをゲームに実装しようとしています。現在、照明なしで約 700 ~ 800 fps です。照明をレンダリングすると、fps が約 300 ~ 400 に低下します。

Color(0,0,0,alphaValue) の色で g.fillRect() を使用してライトをレンダリングします

コード:

for (int y = startY; y<endY; y++) {
    for (int x = startX; x<endX;x++) {
        g.setColor(new Color(0, 0, 0, 255/lightData[y][x]));
        g.fillRect((x*Tile.width)-Camera.x, (y*Tile.height)-Camera.y,
                   Tile.width, Tile.height);
    }
}

LightData[y][x] は 1 ~ 8 の値です。

ライトをより効率的にレンダリングする別の方法があるかどうか疑問に思っています。どんな助けでも大歓迎です。

4

1 に答える 1

1

私はあなたの懸念を理解していますが、「時期尚早の最適化」と呼ばれるものを行っている可能性があります。300 ~ 400 FPS は多く、通常は「わずか」30 でも問題ありません。ゲームの実装を開始し、エンジンが単純な場合、FPS で非常識な数値が得られます。追加機能ごとに FPS が低下します。しかし、妥当な量 (50 など) を超えている場合は、あまり心配する必要はありません。すべての機能が完了したら、最適化を開始します。速度が遅い、またはエンジンをさらに磨きたい場合は、最適化を開始してください。

基本的に、最初にすべての機能を完成させることに集中してから、パフォーマンスについて心配してください。

ただし、できることは、これを事前計算することです。

255/ライトデータ[y][x]

lightData に 1 ~ 8 を格納する代わりに、255/1、255/2 などを格納します。除算はかなりコストがかかります。これは多くのことをもたらさない可能性がありますが、何かであり、簡単に実行できるはずです. 暗くした/明るくしたタイルをバッファーに事前にレンダリングし、そこから描画することさえできます。

于 2013-11-09T19:32:48.150 に答える