2017-12-16 3 views
4

저는 LWJGL 게임에 2D 텍스트 렌더링을 구현하려고 시도하고 있으며 모든 곳에서 실제 해결책을 찾고 있지만 동일한 오류가 계속 발생합니다. 현재 this tutorial을 (를) 따르려고합니다. 여기에 오류가 :TrueTypeFont.drawString() 지원되지 않음

Exception in thread "main" java.lang.IllegalStateException: Function is not supported 
    at org.lwjgl.BufferChecks.checkFunctionAddress(BufferChecks.java:58) 
    at org.lwjgl.opengl.GL11.glColor4f(GL11.java:893) 
    at org.newdawn.slick.opengl.renderer.ImmediateModeOGLRenderer.glColor4f(ImmediateModeOGLRenderer.java:124) 
    at org.newdawn.slick.Color.bind(Color.java:182) 
    at org.newdawn.slick.TrueTypeFont.drawString(TrueTypeFont.java:363) 
    at org.newdawn.slick.TrueTypeFont.drawString(TrueTypeFont.java:355) 
    at guis.Gui.drawString(Gui.java:23) 
    at engineTester.MainGameLoop.main(MainGameLoop.java:110) 

은 여기 내 구이 클래스입니다 :

package guis; 

import java.awt.Font; 

import org.newdawn.slick.TrueTypeFont; 

public class Gui { 

    private TrueTypeFont font; 
    private Font awtFont; 

    public Gui() { 
     this.awtFont = new Font("Times New Roman", Font.BOLD, 24); 
     this.font = new TrueTypeFont(awtFont, false); 
    } 

    public void drawString(int x, int y, String text) { 
     font.drawString(x, y, text); 
    } 

} 

왜이 오류가 발생는?

편집 : 다른 질문에 대한 대답은 다음과 같습니다. https://stackoverflow.com/a/26319508/5838494 이미이 작업을 수행했지만 작동하지 않습니다.

+0

웹에서 'lwjgl IllegalStateException : Function is not supported'를 검색하면 _lots_hits가 표시됩니다. 이거 해봤 니? 거기에서 발견 된 정보 중 어느 것도 당신을 위해 일하지 않았습니까? 여기에 게시하기 전에 기본 연구를 수행하십시오. –

+0

@JimGarrison 그들 중 아무도 나를 위해 일한, 그래서 내가 여기 묻는 이유 –

답변

1

TrueTypeFont에서 사용하는 기능이 3.x에서 제거되었으므로 3.0보다 낮은 OpenGL 버전을 설정해야합니다. 또는 이전 OpenGL 버전을 지원할 필요가없는 경우 opengl 3.x/4.x Opengl3.3 을 살펴보십시오.

+0

"main"스레드에서 예외가 발생했습니다 : java.lang.IllegalArgumentException : 프로파일은 OpenGL 버전 3.2 이상에서만 지원됩니다. org.lwjgl.opengl.ContextAttribs.withProfileCore에서 \t (ContextAttribs.java:188) renderEngine.DisplayManager.createDisplay에서 \t (DisplayManager.java:23) engineTester.MainGameLoop.main에서 \t (MainGameLoop.java:49) –

1

문제는 여기에 당신은 내가 추측 메인 클래스의

public Gui theGui = new Gui(); 

그런 짓을하는 아마. 이제 이렇게하면 생성자가 호출되고 TrueTypeFont을 만들면 주 클래스도 초기화되기 때문에 아직 OpenGL 컨텍스트가 없으므로 OpenGL 컨텍스트가 없어서 그리기가 실패합니다.

public Gui gui;과 같은 선언으로 변경 한 다음 응용 프로그램을로드 할 때 GL 컨텍스트를 만든 후 this.gui = new Gui(); 필드를 할당 할 수 있습니다.

그러나 질문에 코드가 많지 않으므로 여기서는 추측 할 수 있습니다. 이 코드에는 Slick 라이브러리의 비 호환성 (최신 버전을 가지고 있습니까? 아니면 OpenGL 버전과 호환되는 버전이 더 좋습니까?) 또는 이와 유사한 문제가있을 수 있습니다.