【发布时间】:2015-02-28 12:26:48
【问题描述】:
我正在尝试通过 3D 游戏将简单的 GUI 元素渲染到我的屏幕上。当我运行我的程序时,我得到一个 IllegalStateException 说函数不受支持。它在drawRect方法的GUI类中抛出:
package renderEngine;
import org.lwjgl.opengl.GL11;
public class GUI {
public float getRedFromHex(int color) {
return (float)(color >> 16 & 0xFF) / 255F;
}
public float getGreenFromHex(int color) {
return (float)(color >> 8 & 0xFF) / 255F;
}
public float getBlueFromHex(int color) {
return (float)(color & 0xFF) / 255F;
}
public float getAlphaFromHex(int color) {
return (float)(color >> 24 & 0xFF) / 255F;
}
public void drawRect(float x, float y, float width, float height, int color) {
float r = this.getRedFromHex(color);
float g = this.getGreenFromHex(color);
float b = this.getBlueFromHex(color);
float a = this.getAlphaFromHex(color);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glColor4f(r, g, b, a);
GL11.glBegin(GL11.GL_QUADS);
GL11.glVertex2f(x, y);
GL11.glVertex2f(x + width, y);
GL11.glVertex2f(x + width, y + height);
GL11.glVertex2f(x, y + height);
GL11.glEnd();
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_TEXTURE_2D);
}
}
我正在我的渲染类中调用该方法:
private GUI gui = new GUI();
public void render(Light sun, Camera camera) {
prepare();
shader.start();
shader.loadSkyColour(RED,GREEN,BLUE);
shader.loadLight(sun);
shader.loadViewMatrix(camera);
renderer.render(entities);
shader.stop();
terrainShader.start();
terrainShader.loadLight(sun);
terrainShader.loadViewMatrix(camera);
terrainShader.loadSkyColour(RED,GREEN,BLUE);
terrainRenderer.render(terrains);
terrainShader.stop();
gui.drawRect(100, 100, 300, 300, 0x00000000);
terrains.clear();
entities.clear();
}
我做错了什么?
编辑:
这是堆栈跟踪:P
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 renderEngine.GUI.drawRect(GUI.java:28)
at renderEngine.MasterRenderer.render(MasterRenderer.java:85)
at engineTester.MainGameLoop.main(MainGameLoop.java:147)
【问题讨论】:
-
抱歉昨晚来晚了,请查看 EDIT :)
-
我假设你的 GL 版本是 3.2+ 核心配置文件,对吧?
-
我相信是的@SriHarshaChilakapati
-
你们谁来帮我?我在堆栈跟踪中添加了@VinceEmigh
-
@KyleJensen 您检查以确保您的 GL 版本是最新的吗?相信是不够的
标签: java user-interface render lwjgl illegalstateexception