首页 > 解决方案 > 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

我明白了在此处输入图像描述

如您所见,这类似于 (0,255,0,255) 不是我想要的 rgb 值,实际上它似乎只能渲染最大红色绿色或蓝色值,从而使函数变得无意义

标签: lualove2d

解决方案


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

(0,50,0,255)曾经在爱情10中工作。根据wiki,它应该在爱情11中使用您似乎设置的“rgba16f”。但事实并非如此。继续他们的错误报告部分。

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

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

是的,你搞砸了定义和使用的顺序。


推荐阅读