我是android的新手,我的小组目前正在使用opengl es 2.0使用GlSurfaceView创建一个图形应用程序。
我们最近在绘图上显示了网格和刻度线,现在我已经分配了执行数字刻度并将x和y轴标记为“X”和“Y”的任务。
经过大量研究后,我决定通过将一串字符渲染到位图来实现这一目标。我在实现这一目标时遇到了很多问题。我理解基本概念。我知道我需要字母数字字符“0123456789”和“XY”和“ - ”(对于-x和-y比例)。我已经看到了许多不同的例子,并尝试过广泛地遵循JVitella的例子here
我开始掌握这个概念,但就我的字符串而言,我知道我有13个字符,所以我的位图有多大?
同样在Jvitelas的例子中,我对代码感到茫然:
Drawable background = context.getResources().getDrawable(R.drawable.background);
我不明白到底发生了什么,当我编写代码时,我收到了关于上下文的语法错误。
对于我的应用程序,我知道我需要将字符串保存到像这样的位图中。我会创建一个位图,但它应该有多大?然后我从位图创建一个画布,并将canvas.drawText创建到位图中。
[ 0 1 2 3 4 ]
| 5 6 7 8 9 |
[ X Y Z ]
基本上我在问:
答案 0 :(得分:2)
你问了很多问题,但我会尝试回答一些问题:
那么我的位图应该有多大?
取决于你想要的文字多么清晰,这取决于你。您可以为每个可以缩放的字符分配一个包含数百个像素的巨大位图,或者为分辨率有限的非常小的位图分配。我想说你想要的“字体大小”,为每个字符分配至少那么高的像素。因此,如果您想绘制字体大小为“20”的内容,那么您可能需要5x20 x 3x20或100x60的位图。
如何从位图中绘制单个数字?
您将在要绘制字母的位置绘制带有opengl的四边形,并使用该四边形的纹理坐标来选择一个字母。
例如,如果我想绘制一个X,那么你在屏幕上绘制一个四边形,并从(0,0)到(0.2,0.33)分配它的texcoords,它选择纹理的左1/5,和纹理的底部1/3。你会看到这样一个盒子如何与你纹理中“X”的位置对齐。
如何使用多个数字绘制数字?
您只需绘制两个相邻的独立单个数字。
如果您的唯一目标是在Android中绘制文字,则可能更容易使用FrameLayout
,并TextViews
覆盖GLSurfaceView
。 OpenGL不是为文本设计的,这使得它有点麻烦。