2015-05-30 49 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);