我一直在使用lwjgl wiki来了解如何使用该库,并且我已经使用以下内容设置LWJGL(根据this tutorial):
PixelFormat pixelFormat = new PixelFormat();
ContextAttribs contextAttributes = new ContextAttribs(3, 2)
.withForwardCompatible(true)
.withProfileCore(true);
Display.setTitle("Title");
try
{
Display.setFullscreen(true);
Display.setVSyncEnabled(true);
Display.create(pixelFormat, contextAttributes);
}
catch(LWJGLException e)
{
e.printStackTrace();
}
glViewport(0, 0, sizeX, sizeY);
glClearColor(0, 0, 0, 1);
Another tutorial解释了如何绘制文字。但是,不推荐使用TrueTypeFont,因此我将其替换为现在标准的UnicodeFont。我初始化并像这样使用它:
UnicodeFont font = null;
try
{
font = new UnicodeFont(Font.createFont(Font.TRUETYPE_FONT,
new File("path/to/font.ttf")).deriveFont(24)));
}
catch (FontFormatException | IOException e)
{
e.printStackTrace();
}
while(true)
{
glClear(GL_COLOR_BUFFER_BIT);
font.drawString(50.0f, 50.0f, "Hi there.",
new Color(1.0f, 1.0f, 1.0f, 1.0f));
}
这会产生以下错误:
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:881)
at org.newdawn.slick.opengl.renderer.ImmediateModeOGLRenderer.glColor4f(ImmediateModeOGLRenderer.java:119)
at org.newdawn.slick.Color.bind(Color.java:180)
at org.newdawn.slick.TrueTypeFont.drawString(TrueTypeFont.java:367)
at org.newdawn.slick.TrueTypeFont.drawString(TrueTypeFont.java:359)
在调用drawString的行。我该如何解决这个问题?
答案 0 :(得分:0)
您正在创建一个OpenGL 3.2向前兼容的上下文,但显然字体渲染器正在使用立即模式渲染,该渲染从该版本的OpenGL中删除。创建兼容性上下文或切换到其他渲染字体的方法。