Я использовал setDefaultFilter, но текст все еще слишком неровный

#text #lua #love2d

#текст #lua #love2d

Вопрос:

     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!', 0, VIRTUAL_HEIGHT / 2 - 6, VIRTUAL_WIDTH, 'center')

    push:apply('end')
end
 

Я попытался изменить размер шрифта, но он по-прежнему получается неровным. Но я видел, как другие использовали аналогичный код, и текст получается четким и четким.

Ответ №1:

Это будет зависеть от того, насколько детализирован ваш шрифт. Вы используете тот, который выглядел бы лучше, если бы он не был раздут после рендеринга. Вы увидите лучшие результаты, отключив виртуальное игровое поле в этот момент, а затем рисуя прямо на экране. Это проще сделать с заголовками, где их легче разместить в общей области, а не в определенном месте.

 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!', 0, WINDOW_HEIGHT /2 -6, WINDOW_WIDTH, 'center')
end
 

Вы также можете попробовать разные шрифты и посмотреть, имеет ли это какой-либо эффект.

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