2012-05-18 4 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가 잘못된 순서로 있습니다 : 여기 내 코드입니다. 자신의 예에서는 필요하지 않기 때문에 안전하게 삭제할 수 있습니다.

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

가 나는 또한 어떤 최적화없이 코드를 시도하며 행렬 순서 문제에도 불구하고 올바른 실행 : 글꼴에 관한

, UnicodeFont 지금 올바른 것 같다. 네, 작은 초기화 시간이 있습니다. 하지만 여기서 그것은 매우 짧습니다. 약 1 초. 하드웨어가 일반적으로 매우 오래되었거나 그래픽 드라이버가 잘못되었을 수 있습니다.