我用过 setDefaultFilter 但文字仍然太像素化

问题描述

    Class = require 'class'
push = require 'push'

WINDOW_WIDTH = 1280
WINDOW_HEIGHT = 720

VIRTUAL_WIDTH = 432
VIRTUAL_HEIGHT = 243


function love.load()

    love.window.setTitle('Maze')


    love.graphics.setDefaultFilter('nearest','nearest')

    smallFont = love.graphics.newFont('HARRYP__.TTF',25)
    
    push:setupScreen(VIRTUAL_WIDTH,VIRTUAL_HEIGHT,WINDOW_WIDTH,WINDOW_HEIGHT,{
        fullscreen = false,vsync = true,resizable = false,})
end


function love.draw()
    push:apply('start')

    love.graphics.clear(30 / 255,30 / 255,50 / 255,1)

    love.graphics.setFont(smallFont)
    love.graphics.printf('Hello,world!',VIRTUAL_HEIGHT / 2 - 6,VIRTUAL_WIDTH,'center')

    push:apply('end')
end

我尝试更改字体大小,但它仍然像素化。但是我看到其他人使用了与此类似的代码,并且文字清晰明了。

解决方法

这取决于您的字体的详细程度。如果在渲染后没有充气,您正在使用一种看起来会更好的方法。此时关闭虚拟游戏场,然后直接在屏幕上绘图,您会看到更好的结果。标题更容易做到这一点,因为它更容易定位在一般区域,而不是特定位置。

function love.draw()
    push:apply('start')  --  enable virtual size
    love.graphics.clear(30 /255,30 /255,50 /255,1)

    --  draw your game graphics here

    push:apply('end')  --  disable virtual size

    love.graphics.setFont(smallFont)
    love.graphics.printf('Hello,world!',WINDOW_HEIGHT /2 -6,WINDOW_WIDTH,'center')
end

您也可以尝试不同的字体大小,看看是否有任何效果。

smallFont = love.graphics.newFont('HARRYP__.TTF',30)