Как выбрать размер текстуры для 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, то текстура тоже получается искаженной :
Изображение

То есть теперь у меня вопрос не в том, какой размер буфера будет достаточным, а как именно рассчитать сколько байт необходимо для текстуры всех символов шрифта заданной высоты.
Обновление №1
Здесь вы можете увидеть код, который считывает данные из файла TTF и создает текстуру. Я хочу сохранить в одном изображении все символы начиная с кода 32 (включительно) до кода 126 (включительно) для шрифта высотой 48 пикселей. Этот метод описывает создание текстуры (где нужно задать размер пикселя). Этот метод описывает, как рисовать каждый символ. Метод onRenderTexts вызывается в цикле GLFW.

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

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

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

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

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

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