我有这个功能在画布上渲染文字:
public void renderString(String s, int x, int y){
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glPushMatrix();
gl.glLoadIdentity();
gl.glOrtho(0,WIDTH,0,HEIGHT,-1, 1);
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glPushMatrix();
gl.glLoadIdentity();
gl.glTranslatef(x,y,0);
gl.glScalef(textScalingFactor, textScalingFactor, 1f);
glut.glutStrokeString(GLUT.STROKE_ROMAN, s);
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glPopMatrix();
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glPopMatrix();
}
问题是,换行符(\ n)不起作用以及所有以下字符串:
String s1 = "bla"+"\n"+"bla";
String s2 = "bla\nbla";
char newLine = new char(10);
String s3 = "bla"+newLine+"bla";
呈现为:
布拉布拉
有什么想法吗?
P.S。标签(\ t)也不起作用。
P.P.S。与glutBitmapString,glutBitmapCharacter,glutStrokeCharacter相同的问题。
答案 0 :(得分:3)
看起来是just not implemented(鉴于您的示例运行此代码...... )翻译始终会x
,而不是y
。我稍微缩短了以下代码。
public void glutStrokeString(int font, String string) {
/* setup */
for (int pos = 0; pos < len; pos++) {
/* single char setup */
StrokeCharRec ch = fontinfo.ch[c];
if (ch != null) {
/* draw strokes */
}
gl.glTranslatef(ch.right, 0.0f, 0.0f);
}
}
其他方法很可能共享相同的问题。
无论如何,您可以自己拆分字符串,使每个部分的y
移位增加,并将\t
替换为额外的x
偏移量。