4

私はしばらくの間 lwjgl を使用してきましたが、最近、固定関数パイプラインからシェーダーに切り替えることにしました。したがって、プログラムを開始するときに最初に、ContextAttrib(3, 2) を設定して、GL 3.2+ を使用します。問題は、GL の上位バージョンに切り替えると、多くの機能がサポートされなくなることです。上位 GL に切り替える前は、必要なテキストをレンダリングするために Slick のフォント (TrueTypeFont) を使用していましたが、TrueTypeFont の drawString メソッド自体にサポートされていない関数が含まれるようになりました。解決策をグーグルで検索しようとしましたが、何も見つかりませんでした。

GL バージョン 3.2 以降または他のライブラリを使用しているときに、slick-util ライブラリでテキストをレンダリングできるかどうかを知っている人はいますか? または、トピックに関する任意のリンク。助けや提案をいただければ幸いです。

編集:openGL 3.2以降を開始するためのコードは、wikiのチュートリアルから

try
    {
        PixelFormat pixelFormat = new PixelFormat();
        ContextAttribs contextAtrributes = new ContextAttribs(3, 2)
            .withForwardCompatible(true)
            .withProfileCore(true);

        Display.create(pixelFormat, contextAtrributes);
    } catch (LWJGLException e){
        e.printStackTrace();
        return;
    }

openGL 3.2 以降を使用すると、シェーダーのみを使用する必要があります。UnicodeFont または TrueTypeFont、または GL11.glMatrixMode(GL11.GL_PROJECTION); のようなその他の固定関数パイプライン関数で drawString を呼び出したときに表示される例外:

Exception in thread "Thread-0" java.lang.IllegalStateException: Function is not supported
at org.lwjgl.BufferChecks.checkFunctionAddress(BufferChecks.java:58)
at org.lwjgl.opengl.GL11.glColor4f(GL11.java:881)
at org.newdawn.slick.opengl.renderer.ImmediateModeOGLRenderer.glColor4f(ImmediateModeOGLRenderer.java:127)
at org.newdawn.slick.Color.bind(Color.java:182)
at org.newdawn.slick.UnicodeFont.drawDisplayList(UnicodeFont.java:443)
at org.newdawn.slick.UnicodeFont.drawString(UnicodeFont.java:551)
at org.newdawn.slick.UnicodeFont.drawString(UnicodeFont.java:559)
at org.newdawn.slick.UnicodeFont.drawString(UnicodeFont.java:555)
at application.Controller.render3D(Controller.java:163)
at Engine.Engine.renderScene3D(Engine.java:230)
at Engine.Engine.render(Engine.java:334)
at Engine.Engine.gameLoop(Engine.java:306)
at Engine.Engine.access$1(Engine.java:246)
at Engine.Engine$1.run(Engine.java:154)

ありがとう。

4

1 に答える 1