Love2d 以表格方式绘制

在 Love2d 中有没有一种高效的方式可以在屏幕上打印一个大的(比如,800 x 600)颜色值表格?我试过创建许多矩形(这非常慢),或者创建一个 imageData 并绘制它(如果表格值不在每帧改变,这将是好的,但它们确实在改变)。谢谢!

点赞
用户805875
用户805875

如果你能在不需要额外数据的情况下计算出这些值,你可以尝试编写着色器让它在绘制时直接计算。

如果这样做还不够快,使用 ImageData 可以比默认情况下更快。首先,您应该确保每帧不要调用 g = love.graphics.newImage( image_data ),而是仅创建一次,并仅调用g:refresh()

接下来,:mapPixel 的效率很低,因为它会不断地从 C 调用到 Lua(每个像素一次),这会增加相当大的开销。在 Lua 中重新编写它,或者只使用 :setPixel(也许还有 : getPixel)的普通循环的速度更快。

如果仍然太慢,最后一个问题是:LuaJIT 无法 JIT-编译通过正常 Lua API 提供的 C 函数调用。但是,如果您通过 ffi 描述数据结构,然后让 LuaJIT 直接访问,则可以替换这些函数。 Slime 已经为 love-0.9 执行了此操作(github 上的代码)。只需 require 该文件,它将替换慢函数,这样一切都应该更快。我不能百分之一百确定,但我认为我已经在当前版本(0.10)中使用了这个,它仍然有效。(如果 ImageData 的内部格式发生变化,它将会损坏,但修复起来相对容易,而且很可能会被其他人更新代码并发布在其他地方)。

2017-02-13 01:09:20