3

トップダウンの 2D ゲームを書いています。私は 128x128px のタイルセットを使用しており、128、64、32、および 16px の 4 つのズーム レベルを提供しています。画像に slick-utils draw メソッドを使用してレンダリングし、2 次元の FOR ループをループして、ミックスに「レンダリング範囲」を追加して、表示されているものに対して必要な量のタイルのみがレンダリングされるようにします画面上で。遅延は明らかにレンダリング プロセスに起因します。最高のズーム レベルである 128x128 では安定した FPS が得られますが、16x16 ピクセルでは 10FPS まで着実に低下します。これはコードの効率性の問題だと確信していますが、初心者としてどこから始めればよいかわかりません。

すべての助けに感謝します、ありがとう!

コード:

for(int x=xPos-1;x<=xPos+renderRange;x++){
    for(int y=yPos-1;y<=yPos+renderRange;y++){

        /**Render Terrain*/
        Image texture = getTerrainTexture(map.tiles[x][y]);
        texture.rotate(map.tiles[x][y].imageRotate);
        texture.draw(x*128,y*128);

        /**Render Objects*/
        if(map.tiles[x][y].object != 0){
            Image object = getObjectTexture(map.tiles[x][y]);
            object.draw(x*128,y*128);
        }
    }
}
4

1 に答える 1

8

別のレンダリング方法を使用する必要があります。現在使用しているレンダリング方法は、即時レンダリングと呼ばれます。遅いと言えば十分です。ディスプレイリスト(静的ジオメトリのみ)や頂点バッファオブジェクト(習得はより困難ですが、静的ではありません)などの別のレンダリング方法を使用する必要があります。

于 2012-06-29T15:14:16.923 に答える