2012-05-18 227 views
1

我做了一個簡單的LWJGL程序,它在屏幕上顯示和渲染文本。我用Slick-util btw來渲染文本。LWJGL慢速渲染

所以我的問題是爲什麼在加載之前需要幾秒鐘的黑屏(或任何清晰的顏色)。有沒有辦法來解決這個問題?我可以隱藏顯示器直到它全部呈現嗎?那些是我的問題。這裏是我的代碼:

package com.survivalpixel.kopis; 

import static org.lwjgl.opengl.GL11.GL_MODELVIEW; 
import static org.lwjgl.opengl.GL11.GL_PROJECTION; 
import static org.lwjgl.opengl.GL11.GL_TEXTURE_2D; 
import static org.lwjgl.opengl.GL11.glEnable; 
import static org.lwjgl.opengl.GL11.glMatrixMode; 
import static org.lwjgl.opengl.GL11.*; 
import static org.lwjgl.opengl.GL11.glPopMatrix; 
import static org.lwjgl.opengl.GL11.glPushMatrix; 

import java.awt.Font; 

import org.lwjgl.LWJGLException; 
import org.lwjgl.opengl.Display; 
import org.lwjgl.opengl.DisplayMode; 
import org.lwjgl.opengl.GL11; 
import org.newdawn.slick.TrueTypeFont; 
public class Menu { 
private int WIDTH = 1080,HEIGHT = 720; 
Font font; 
TrueTypeFont gamefont; 
public static void main(String args[]){ 
    new Menu(); 
} 
public Menu(){ 
    try { 
     Display.setDisplayMode(new DisplayMode(WIDTH,HEIGHT)); 
     Display.setResizable(false); 
     Display.setTitle("Kopis V.01"); 
     Display.create(); 
    } catch (LWJGLException e) { 

    } 

    initGL(); 
    init(); 


    while(!Display.isCloseRequested()){ 
     glPopMatrix(); 

     glClear(GL11.GL_COLOR_BUFFER_BIT); 

     drawString("This is a test",100,100); 

     Display.update(); 
     Display.sync(100); 
     glPushMatrix(); 
    } 
    Display.destroy(); 
    System.exit(0); 
} 
private void initGL() { 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho(0, 1080, 720, 0, -1, 1); 
    glMatrixMode(GL_MODELVIEW); 
    glClearColor(0, 0, 0, 0); 
    glEnable(GL_BLEND); 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 


} 
private void init() { 

    font = new Font("times new roman", Font.BOLD,12); 
    gamefont = new TrueTypeFont(font, false); 


} 
public void drawString(String s,int x, int y){ 
    gamefont.drawString(x, y, s); 
} 
} 
+0

不要吞下異常。我認爲你已經交換了'glPushMatrix' /'glPopMatrix'。 [TrueTypeFont](http://slick.cokeandcode.com/javadoc/org/newdawn/slick/TrueTypeFont.html)似乎已被棄用 - 也許這就是原因。 –

回答

0

正如Banthar提到,glPushMatrix/glPopMatrix是錯誤的順序。在你的例子中甚至不需要它們,所以你可以安全地刪除它們。

關於字體,似乎UnicodeFont現在是正確的:

textFont = new UnicodeFont(new Font("Times New Roman", Font.PLAIN, 18)); 
textFont.addAsciiGlyphs(); 
textFont.getEffects().add(new ColorEffect(java.awt.Color.WHITE)); 
textFont.loadGlyphs(); 

我也想你的代碼,不使用任何優化,它運行,儘管矩陣順序問題是正確的。是的,初始化時間很短。但這裏很短,大約一秒鐘。您的硬件通常很舊,或者您的圖形驅動程序可能不正確。