2017-12-16 57 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:機能がサポートされていません。 'のWebを検索すると_lots_のヒットが表示されます。これを試しましたか?そこに見つかった情報はどれもあなたのために働いていませんでしたか?ここに投稿する前に基礎研究をしてください。 –

+0

@JimGarrison誰も私のために働いていなかったので、ここで尋ねた理由 –

答えて

1

TrueTypeFontで使用される関数が3.xで削除されているため、OpenGLのバージョンを3.0より低く設定する必要があります。 OpenGL 3.x/4.x Opengl3.3 古いOpenGLバージョンをサポートする必要がない場合は、こちらをご覧ください。

+0

スレッド「main」の例外java.lang.IllegalArgumentException:プロファイルはOpenGLバージョン3.2以降でのみサポートされています。 engineTester.MainGameLoop.main(MainGameLoop.java:49)で org.lwjgl.opengl.ContextAttribs.withProfileCoreで\t(ContextAttribs.java:188) renderEngine.DisplayManager.createDisplayで\t(DisplayManager.java:23) \t –

1

ここでの問題は、あなたが私が推測するあなたのメインクラスで

public Gui theGui = new Gui(); 

ような何かを行うことはおそらくです。これを行うと、コンストラクタが呼び出され、TrueTypeFontを作成すると、まだメインクラスも初期化されているため、OpenGLコンテキストが存在しないため描画が失敗します。

public Gui gui;のような宣言に変更してから、アプリケーションをロードするときに、GLコンテキストを作成した後で、フィールドにthis.gui = new Gui();を割り当てることができます。

しかし、私はあなたの質問に多くのコードがないので、ここでしか推測できません。このコードには、Slickライブラリの互換性の問題(OpenGLバージョンと互換性があることが知られている最新バージョンをお持ちですか?)などがあります。

関連する問題