# Problem mit Transparenz/TextDrawing in LWJGL/Slick2d (OpenGL)



## Streeber (3. Mai 2016)

Hallo, ich habe das Problem, dass einen Text den ich mit Slick drawe Auf dem Hintergrund sozusagen "bleibt" und nicht wie gewünscht gelöscht wird um einen neuen Text zu drawen. Der Text bekommt einen weißen Kasten und man kann den Text nicht mehr erkennen (In diesem Fall die Punkteanzeige).

So initialisiere ich OpenGL:

```
public static void beginSession(){
        Display.setTitle("...");
        try {
            Display.setDisplayMode(new DisplayMode(WIDTH,HEIGHT));
            Display.create();
        } catch (LWJGLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0,WIDTH,HEIGHT,0,1,-1);
        glMatrixMode(GL_MODELVIEW);
        glEnable(GL_TEXTURE_2D);
       
       
    }
```

So initialisiere ich Font:

```
public static void initFont(){
        Font awtFont = new Font("Arial", Font.BOLD, 20);
        font = new TrueTypeFont(awtFont, false);
    }
```

So wird der Text gezeichnet:

```
public static void drawTextScreen(String text, float posX, float posY, Color color){
        //draw it.
        TextureImpl.bindNone();
        font.drawString(posX,posY,text,color);
       
    }
```

drawTextScreen() wird andauernd als update aufgerufen.

Hier noch ein Video welches das Problem zeigt (Anfangs der Text und die Points Anzeige)


----------



## Baldur (10. Mai 2016)

Die Ziffern werden einfach jeweils übereinander gezeichnet, ohne daß der vorherige Inhalt gelöscht wird.
Normalerweise ruft man vor jedem Frame ein glClear auf, um den kompletten Bildschirminhalt zu löschen, so daß alles von vorn gezeichnet wird. Macht dein Programm da etwas anderes und zeichnet nur den geänderten Bildschirminhalt neu?
Dann könnte man theoretisch auch einfach ein schwarzes Rechteck über die Font zeichnen und somit nur den Textbereich löschen.


----------

