2017-02-12 7 views
1

大きな値(800 x 600のような)を画面に表示するには、Love2dに効率的な方法がありますか?私はたくさんの矩形(ひどく遅い)を作成するか、imageDataを作成して描画する(テーブル値がすべてのフレームで変更されていない場合は問題ありませんが、そうすることを試みました)。ありがとう!Love2dテーブルから描画

答えて

1

余計なデータなしで値を計算することができれば、シェーダーを作成して、物事が描かれている間に計算することができます。

これでうまくいかない場合、ImageDataの使用は通常、デフォルトよりもはるかに高速に行うことができます。まず、フレームごとにg = love.graphics.newImage(image_data)を呼び出していないことを確認してください。一度作成してから、g:refresh()と呼び出してください。

次に、:mapPixelはCからLua(1ピクセルにつき1回)を呼び出すため、実際には遅く、かなりオーバーヘッドです。 Luaでそれを書き直すか、または:setPixel(おそらくは:getPixel)のプレーンループを使う方が速いです。

それでも遅すぎる場合、最後の問題は次のとおりです。LuaJITは、通常のLua APIで提供されているC関数への呼び出しをJITコンパイルできません。しかし、これらは、ffiを介してデータ構造を記述し、LuaJITに直接アクセスさせる場合に置き換えることができます。スライムは愛のためにこれをしました-0.9(code on github)。ちょうどrequireそのファイルとそれは遅い機能を置き換えます、そして、すべてがより速くすべきです。私は100%確信していませんが、私はすでにこれを現在のバージョン(0.10)で使用していると思いますが、それでも動作します。 (ImageDataの内部フォーマットが変更された場合、それは中断されますが、修正するのは比較的簡単でなければなりません。他の人がコードを更新してどこかに投稿する可能性があります)

関連する問題