Как масштабировать текст на текстуре (четырехугольный объект)? - PullRequest
1 голос
/ 23 марта 2012

Я нашел хороший способ рисования текста в 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, и некоторые простые математики могут быть вовлечены, но как мне получить правильные размеры?

...