Java 不支持TrueTypeFont.drawString()

Java 不支持TrueTypeFont.drawString(),java,opengl,fonts,lwjgl,slick2d,Java,Opengl,Fonts,Lwjgl,Slick2d,我正试图在我的LWJGL游戏中实现2D文本渲染,并在任何地方搜索了一个有效的解决方案,但仍然得到相同的错误。我目前正在努力跟进。以下是错误: Exception in thread "main" java.lang.IllegalStateException: Function is not supported at org.lwjgl.BufferChecks.checkFunctionAddress(BufferChecks.java:58) at org.lwjgl.ope

我正试图在我的LWJGL游戏中实现2D文本渲染,并在任何地方搜索了一个有效的解决方案,但仍然得到相同的错误。我目前正在努力跟进。以下是错误:

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)
这是我的Gui类:

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);
    }

}
为什么会出现这种错误


编辑:关于另一个问题的答案:我已经这样做了,但它不起作用。

您需要将opengl版本设置为低于3.0,因为TrueTypeFont使用的函数已在3.x中删除。 或者您可以查看opengl 3.x/4.x
如果您不必支持较旧的opengl版本。

这里的问题可能是您执行了以下操作

    public Gui theGui = new Gui();
我想是在你的主课上吧。现在,当您执行此操作时,将调用构造函数,并且当您在那里创建
TrueTypeFont
时,还没有OpenGL上下文,因为主类也刚刚初始化,因此图形失败,因为它没有OpenGL上下文

您可以尝试将其更改为一个声明,如
publicgui
然后,在加载应用程序时,在创建GL上下文后,使用
this.gui=new gui()分配字段


但我只能在这里猜测,因为您的问题中没有太多代码。这段代码可能还有其他问题,比如Slick库的不兼容(您有最新版本,或者更好的版本与OpenGL版本兼容吗?),或者类似的问题。

在web上搜索
lwjgl IllegalStateException:函数不受支持
会带来大量点击。你试过这个吗?在那里找到的信息都不适合你吗?在这里发布之前,请做一些基础研究。@JimGarrison没有一个对我有用,所以我在这里问了一个问题。我得到了一个错误:线程“main”java.lang.IllegalArgumentException中的异常:只有OpenGL版本3.2或更高版本才支持配置文件。位于org.lwjgl.opengl.ContextAttribs.withProfileCore(ContextAttribs.java:188)的renderEngine.DisplayManager.createDisplay(DisplayManager.java:23)的engineTester.MainGameLoop.main(MainGameLoop.java:49)