Graphics 从表中绘制

Graphics 从表中绘制,graphics,lua,love2d,Graphics,Lua,Love2d,Love2d中有没有一种有效的方法可以在屏幕上打印一个大的(比如800 x 600)颜色值表?我尝试过创建很多矩形(速度非常慢)或者创建一个imageData并绘制它(如果表格值在每一帧都不改变,那就好了,但它们确实改变了)。谢谢 如果你可以在没有(太多)额外数据的情况下计算这些值,你可以尝试编写一个着色器,并让它在绘制东西时进行计算 如果这不起作用,使用ImageData通常比默认情况下快得多。首先,您应该确保没有按帧调用g=love.graphics.newImage(image\u dat

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

如果你可以在没有(太多)额外数据的情况下计算这些值,你可以尝试编写一个着色器,并让它在绘制东西时进行计算

如果这不起作用,使用ImageData通常比默认情况下快得多。首先,您应该确保没有按帧调用
g=love.graphics.newImage(image\u data)
,而是创建一次,然后只调用
g:refresh()

接下来的事情是,
:mapPixel
非常慢,因为它不断地从C调用Lua(每像素一次),这是相当大的开销。在Lua中重写或使用带有
:setPixel
(可能还有
:getPixel
)的普通循环会更快

如果仍然太慢,最后一个问题是:LuaJIT无法JIT编译通过普通LuaAPI提供的对C函数的调用。但是,如果您通过ffi描述数据结构,然后让LuaJIT直接进行访问,则可以替换这些。Slime这样做是为了爱情-0.9()。只要
需要
这个文件,它就会取代那些缓慢的函数,而且一切都应该快得多。我不是100%确定,但我想我已经在当前版本(0.10)中使用了它,并且它仍然有效。(如果ImageData的内部格式发生变化,它将被破坏,但修复起来应该相对容易——而且很可能有其他人会更新代码并将其发布到某个地方。)