Я нашел хороший способ рисования текста в openGL, создав растровое изображение, нарисовав на нем текст и превратив его в текстуру.
У меня есть screenCoordinates (320, ~~ 480) и gameCoordinates (20,28), в которых определены размеры четырехугольников. Пример конструктора: GameObject(x, y, width, height, text)
.
Для создания растрового изображения я создаю Canvas с таким размером:
// get width and height in px (p is a Paint() object)
p.setTextSize(textSize * Main.getMainResources().getDisplayMetrics().density);
final int width = (int) p.measureText(text);
final int height = (int) (p.descent() + -p.ascent());
canvas.drawText(text, 0, -p.ascent(), p);
Создайте растровое изображение, масштабируемое до следующей степени 2, и у вас будет ваше текстурное растровое изображение.
Однако проблема в том, что, поскольку размеры квада не адаптированы к измерениям растрового изображения (текста), текст не очень гладкий. У меня есть возможность изменить размеры квада с помощью quad.setDimensions(width, height)
, но каков будет размер, который я должен дать, а также мне не придется беспокоиться о textSize (sp) текста, который я Рисование?
Это все в 2D, и некоторые простые математики могут быть вовлечены, но как мне получить правильные размеры?