Android opengl-es-schnell Weg, um die Darstellung von text
Möchte ich zeigen, einige text in opengl ES. Ich habe eine 512*512 font-textur (textur atlas), alle Buchstaben beträgt 32*32 pixel hier.
Mein text Länge ist etwa 400 char.
Mein Algorithmus
opengl.setClearTransparentBGEnabled();
float y2=0;
float j =0;
for (int i=0; i<text.length(); i++) {
int ch =(int)text.charAt(i);
float x2=((float)j*16*scale/50);
j++;
if ((text.charAt(i)+"").equals("\n")) {
y2+=(16*scale*2)/50;
j=0;
x2=0;
}
opengl.saveMatrix();
Sprites.selectVertex("font"+name)
.setSprite(ch)
.translate(x-x2, y+y2, -9)
.scale(scale, scale, scale)
.rotate(90, 0, 0, 1)
.draw(true);
opengl.loadMatrix();
}
opengl.setClearTransparentBGDisabled();
Meine nur probleme, diese Methode ist sehr langsam: nach diesem bekomme ich 15-20 FPS.
Was ist der beste Weg, zum Rendern von Texten in opengl-es-dynamisch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das ist viel zu viel Arbeit zu tun, pro-frame.
Ich würde verwenden Sie die 2D-APIs
Canvas.drawText()
(oderdrawBitmap
, wenn Sie nicht mit einer echten Schrift) die 400 chars zu einem privatenBitmap
, und verwenden Sie diese als meine textur.Sie wiederholen eine Menge Arbeit, jedes Bild und für jedes Zeichen im text. Sie sollten die Berechnung der vertex-und triangle-Daten für eine bestimmte Zeichenfolge, und dann schicken Sie es an opengl in einem batch. Die Wiederverwendung der Daten so lange, wie der string bleibt gleich.