2016-07-09 36 views
0

Ich kann keinen möglichen Grund feststellen, warum die Verwendung von UnicodeFont.drawString() bewirkt, dass alles andere, das auf dem Bildschirm in einer LWJGL-Anwendung gerendert wurde, verschwindet. In meinem Fall sollte das Programm ein Dreieck und etwas Text zeichnen, nur um Dinge zu testen, aber was stattdessen passiert ist, dass das Dreieck für ein einzelnes Bild vor dem Verschwinden angezeigt wird und nur der anzuzeigende Text übrig bleibt. Das Dreieck erscheint als normal, wenn der Anruf drawString() entfernt wird.Slick2D UnicodeFont Drawstring beseitigt den Rest des Bildschirms

ich die Schriftart wie folgt festgelegt:

 UnicodeFont font = new UnicodeFont(new java.awt.Font("Times New Roman", java.awt.Font.PLAIN, 24)); 
     font.getEffects().add(new ColorEffect(java.awt.Color.WHITE)); 
     font.addAsciiGlyphs(); 
     try { 
      font.loadGlyphs(); 
     } catch (SlickException e) { 
      e.printStackTrace(); 
     } 

Dann ist diese in der Render Schleife aufrufen:

 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
     glClearColor(0, 0, 0, 0); 

     glColor3f(1, 1, 1); 

     glEnableClientState(GL_VERTEX_ARRAY); 
     glBindBuffer(GL_ARRAY_BUFFER, fbid); 
     glVertexPointer(2, GL_FLOAT, 0, 0); 

     glEnableClientState(GL_COLOR_ARRAY); 
     glBindBuffer(GL_ARRAY_BUFFER, fbid2); 
     glColorPointer(3, GL_FLOAT, 0, 0); 

     glDrawArrays(GL_TRIANGLES, 0, 4); 
     font.drawString(100, 300, "Test"); 

     glBindBuffer(GL_ARRAY_BUFFER, 0); 
     glDisableClientState(GL_VERTEX_ARRAY); 
     glDisableClientState(GL_COLOR_ARRAY); 

     DisplayManager.update(); 

Antwort

0

So sieht es aus wie mein Problem aus einem Chaos-up dämmt mit Aktivierung/Deaktivierung Texturen. Ich beschloss, es durch die folgenden zu Beginn meiner Render-Schleife hinzu:

glDisable(GL_BLEND); 

und das Hinzufügen dieser vor dem Aufruf von drawString(...):

glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA):