Love2d 抽取自 table

Love2d draw from table

Love2d 中是否有一种有效的方法可以在屏幕上打印大尺寸(如 800 x 600)table 颜色值?我已经尝试过创建很多矩形(这非常慢)或创建一个 imageData 并绘制它(如果 table-values 在每一帧都没有改变,但它们会改变,这会很好)。谢谢!

如果您可以在没有(很多)额外数据的情况下计算这些值,您可以尝试编写一个着色器并让它在绘制时计算内容。

如果这不起作用,使用 ImageData 通常可以比默认情况下快很多。首先,你应该确保你不是每帧调用 g = love.graphics.newImage( image_data ) 而是创建一次然后只调用 g:refresh( ).

接下来的事情是 :mapPixel 真的很慢,因为它不断地从 C 调用到 Lua(每个像素一次),这是相当多的开销。在 Lua 中重写它或者只使用带有 :setPixel 的普通循环(也许 :getPixel)更快。

如果仍然太慢,最后一个问题如下:LuaJIT 无法JIT-compile 调用通过正常 Lua API 提供的 C 函数。但是,如果您通过 ffi 描述数据结构,然后让 LuaJIT 直接进行访问,则可以替换这些。史莱姆为 love-0.9 (code on github) 做到了这一点。只需 require 那个文件,它将取代慢速功能,一切都应该快得多。我不是 100% 确定,但我认为我已经在当前版本 (0.10) 中使用了它并且它仍然有效。 (如果 ImageData 的内部格式发生变化,它就会崩溃,但它应该相对容易修复 – 很可能其他人会更新代码并 post 它在某处。)