LOVE2D 映射像素错误

所以当我尝试将这个 RGB 值映射到我的数据上时:

image=love.image.newImageData(WIDTH,HEIGHT,"rgba16f")

image:mapPixel(pixelFunction)

image2=love.graphics.newImage(image)

function pixelFunction(x, y, r, g, b, a)
    return 0,50,0,255
end

我得到了这个 enter image description here

正如你所看到的,这是类似于 (0,255,0,255) 而不是我想要的 RGB 值,实际上它似乎只能渲染最大的红色、绿色或蓝色值,使这个函数毫无意义。

点赞
用户4687565
用户4687565

由于只生成了极端颜色,可以猜到值 50 超出了动态范围。使用以一的分数表示的 rgba(0、50/255,0、1)确实会产生深绿色。

(0,50,0,255) 曾经在 Love 10 中起作用。根据 wiki 的说法,它应该在你所设置的 "rgba16f" 中在 Love 11 中起作用。但事实并非如此。请前往他们的错误报告部分。

此外,请注意问题的 最小可重复示例 应该按照以下方式进行:

WIDTH=300; HEIGHT=300;
imageData=love.image.newImageData(WIDTH,HEIGHT,'rgba16f')

function pixelFunction(x, y, r, g, b, a)
    return 0,50/255,0,255
end

imageData:mapPixel(pixelFunction)

image=love.graphics.newImage(imageData)

function love.draw()
    love.graphics.draw(image,0,0)
end

是的,你弄错了定义和用法的顺序。

2018-06-09 16:37:28