2015-05-30 3 views
0

Я пытаюсь нарисовать текст на экране в LWJGL после this tutorial. Проблема в том, что когда я рисую текст на экране, он отлично рисует , но, когда я рисую квадрат с текст, квадрат не отображается.Рисование текста для отображения

класс игры

package moa.bermudez; 

import static org.lwjgl.opengl.GL11.*; 

import java.awt.Font; 
import java.io.InputStream; 

import moa.bermudez.utils.Artist; 

import org.lwjgl.LWJGLException; 
import org.lwjgl.opengl.Display; 
import org.lwjgl.opengl.DisplayMode; 
import org.newdawn.slick.TrueTypeFont; 

public class Game 
{ 
public static final int WIDTH = 320; 
public static final int HEIGHT = WIDTH * 9/16; 
public static final int SCALE = 3; 
public static final String NAME = "----"; 
public static final float VERSION = 0.1f; 
public static final int MAX_FPS = 60; 

private TrueTypeFont font; 
private boolean fontAS = true; 

public Game() 
{ 
    try 
    { 
     Display.setDisplayMode(new DisplayMode(WIDTH * SCALE, HEIGHT * SCALE)); 
     Display.setTitle(NAME + " " + VERSION); 
     Display.create(); 
    } catch(LWJGLException e) 
    { 
     e.printStackTrace(); 
     Display.destroy(); 
    } 

    init(); 
    while(!Display.isCloseRequested()) 
    { 
     setCamera(); 
     update(); 
     Display.sync(MAX_FPS); 
    } 

    Display.destroy(); 
} 

public void update() 
{  
    glClear(GL_COLOR_BUFFER_BIT); 

    font.drawString(0, 0, "This text is showing"); 
    Artist.drawQuad(0, 0, 100, 100); // This is not showing. 

    Display.update(); 
} 

public void setCamera() 
{ 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glViewport(0, 0, WIDTH * SCALE, HEIGHT * SCALE); 
    glOrtho(0, WIDTH * SCALE, HEIGHT * SCALE, 0, 1, -1); 
    glMatrixMode(GL_MODELVIEW); 
    glEnable(GL_TEXTURE_2D); 
    glEnable(GL_BLEND); 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
} 

public void init() 
{ 
    try { 
     InputStream inputStream = moa.bermudez.fonts.Font.DEFAULT_FONT; 

     Font awtFont = Font.createFont(Font.TRUETYPE_FONT, inputStream); 
     awtFont = awtFont.deriveFont(24f); 
     font = new TrueTypeFont(awtFont, fontAS); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public static void main(String[] args) 
{ 
    new Game(); 
} 
} 

метод DrawQuad художник

public static void drawQuad(float x, float y, float width, float height) 
{ 
    glBegin(GL_QUADS); 

     glColor3d(0, 0, 1); 
     glVertex2f(x, y); 
     glVertex2f(x + width, y); 
     glVertex2f(x + width, y + height); 
     glVertex2f(x, y + height); 

    glEnd(); 
} 

ответ

1

После поиска, я нашел решение этой проблемы из this stackoverflow post

Не вызывающее glEnable (GL_BLEND) в initGL, но вызов glEnable (GL_BLEND) при рисовании текста должен заставить его работать.

glEnable(GL_BLEND); 
font.drawString(0, 0, "This is a text that should appear"); 
glDisable(GL_BLEND); 
Смежные вопросы