Как выбрать размер текстуры для STB Truetype?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как выбрать размер текстуры для STB Truetype?

Сообщение Anonymous »

Теперь я хочу рисовать текст, используя OpenGL с STB. Я использую LWJGL, но вопрос в размере текстуры в целом.
Для создания текстуры я использую метод stbtt_PackBegin (затем переношу данные из ttf-файла). Вам нужно передать ему буфер байтов (пикселей). Размер этого буфера должен зависеть от размера желаемого конечного изображения. Я делаю вывод, что это должна быть высота символов шрифта, умноженная на ширину всех символов шрифта. В примерах я видел только абстрактные 1024x1024 или 512x512. Мой вопрос касается этих значений.
Перед вызовом stbtt_PackFontRange я вызываю stbtt_PackSetOversampling. В документации сказано:

Общее количество необходимых пикселей h_oversample*v_oversample больше, чем значение по умолчанию; например, передискретизация 2x2 требует в 4 раза больше места, чем 1x1.

Я делаю вывод, что размер буфера должен быть шириной x h_oversample x высотой x v_oversample .
Изображение

На самом деле, если установить меньшую ширину (почти в два раза), то этого будет достаточно для правильное отображение. То есть моя теория о ширине не подтвердилась. Но если уменьшить его, то будут видны искажения:
Изображение

Также я заметил, что если значение ширины НЕ делится на 4, то текстура тоже получается искаженной :
Изображение

То есть теперь у меня вопрос не в том, какой размер буфера будет достаточным, а как именно рассчитать сколько байт необходимо для текстуры всех символов шрифта заданной высоты.

Подробнее здесь: https://stackoverflow.com/questions/792 ... b-truetype
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»