Löve2D使用Quad放大图像时如何关闭自动抗锯齿?
解决Löve2D绘制像素精灵自动抗锯齿模糊的方法
你遇到的模糊问题核心是Löve2D默认对纹理使用线性插值采样,放大纹理时会自动做平滑处理,和你使用整数坐标无关,按以下步骤修改即可实现像素级精确渲染:
1. 修改纹理采样模式为最近邻
加载图片后调用setFilter方法,将缩放时的采样规则改为最近邻采样,直接取原始像素值,不做插值:
function love.load() sprite = love.graphics.newImage('image.png') -- 新增该行,第一个参数为缩小采样模式,第二个为放大采样模式,都设为nearest即可 sprite:setFilter("nearest", "nearest") -- 补充你原有代码中遗漏的右括号 centerbox = love.graphics.newQuad(5, 5, 5, 5, sprite:getDimensions()) end
2. 关闭全局抗锯齿配置
如果修改采样模式后仍有模糊,检查项目根目录的conf.lua配置文件,关闭MSAA多重采样抗锯齿:
function love.conf(t) -- 关闭多重采样抗锯齿,像素风格UI不需要该效果 t.window.msaa = 0 -- 如果你使用高DPI屏幕,可根据需求调整highdpi配置,注意绘制坐标要和DPI系数匹配,避免出现半像素偏移 end
3. 保持原有绘制逻辑即可
你现有的绘制参数已经是整数坐标、整数缩放、0旋转,修改采样模式后就能得到完全符合预期的像素放大效果:
function love.draw() love.graphics.draw(sprite, centerbox, 0, 0, 0, 30, 30) end
内容的提问来源于stack exchange,提问作者hyuckkim
相关产品推荐
相关产品推荐

