通过创建一个Bitmap,在其上绘制文本并将其制作成纹理,我找到了一种在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)画画?
这一切都是二维的,一些简单的数学可能会涉及到,但我应该如何获得正确的尺寸?