2012-04-13 5 views
2

ich diese Funktion haben einen Text auf meiner Leinwand zu machen:JOGL/OpenGL: " n" (Zeilenende) arbeitet nicht für Text-Rendering

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(); 
} 

Das Problem ist, Newline-Zeichen (\ n) ist nicht funktioniert und alle folgenden Strings:

blabla

:

String s1 = "bla"+"\n"+"bla"; 
String s2 = "bla\nbla"; 

char newLine = new char(10); 
String s3 = "bla"+newLine+"bla"; 

wie gerendert werden

Irgendwelche Ideen?

P.S. Tab (\ t) funktioniert nicht so gut.

P.P.S. Das gleiche Problem mit glutBitmapString, glutBitmapCharacter, gltStrokeCharacter.

Antwort

3

Sieht aus wie es just not implemented (gegeben, dass Ihr Beispiel diesen Code läuft ...) ist die Übersetzung immer verschiebt x, nie y. Ich habe den folgenden Code etwas gekürzt.

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); 
    } 
} 

Es ist sehr wahrscheinlich, dass die anderen Methoden das gleiche Problem haben.

Wie auch immer, Sie könnten die Zeichenfolge selbst aufteilen, jedes Teil mit einer steigenden y Verschiebung zeichnen und \t durch etwas zusätzlichen x Offset ersetzen.

Verwandte Themen