I’ve searched the forums but nothing in here relates to my video card…
I’m getting this:
[java]
java.lang.IllegalStateException: Function is not supported
at org.lwjgl.BufferChecks.checkFunctionAddress(BufferChecks.java:64)
at org.lwjgl.opengl.GL11.glAlphaFunc(GL11.java:562)
at com.jme3.renderer.lwjgl.LwjglRenderer.applyRenderState(LwjglRenderer.java:464)
at com.jme3.material.Material.render(Material.java:803)
at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:434)
at com.jme3.renderer.queue.RenderQueue.renderGeometryList(RenderQueue.java:132)
at com.jme3.renderer.queue.RenderQueue.renderQueue(RenderQueue.java:183)
at com.jme3.renderer.RenderManager.renderViewPortQueues(RenderManager.java:575)
at com.jme3.renderer.RenderManager.flushQueue(RenderManager.java:555)
at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:718)
at com.jme3.renderer.RenderManager.render(RenderManager.java:739)
at com.madjack.games.sc.Base.update(Base.java:111)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:146)
at com.jme3.system.lwjgl.LwjglDisplay.runLoop(LwjglDisplay.java:159)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:208)
at java.lang.Thread.run(Thread.java:662)
[/java]
The only problem here is that I have an nVidia GTX 480. Latest drivers (266.58). This thing support openGL 4.0.
This works well and generates no error:
[java]
@Override
public void start() {
if (settings == null) {
AppSettings gameSettings = new AppSettings(false);
gameSettings.setResolution(1280, 720);
// gameSettings.setResolution(1680, 1050);
// gameSettings.setFullscreen(true);
gameSettings.setTitle(“Stellar Conquest”);
gameSettings.setUseInput(true);
gameSettings.setFrameRate(120);
gameSettings.setRenderer(“LWJGL-OpenGL3”);
settings = gameSettings;
}
super.start();
setPauseOnLostFocus(false);
}
[/java]
I’m not sure exactly what is breaking, but if I use:
[java] gameSettings.setRenderer(“LWJGL-OpenGL2”);[/java]
it works flawlessly…
Suggestions?
You dont need to set a renderer type to use OpenGL3, only if you want to go downwards in compatibility (say use ogl2 explicitly on a ogl3 card). However this error should probably not occurr if you try to…
jME3 is not OpenGL3+ compatible yet. All shaders need to be ported to GLSL 3.30 and usage of alpha test needs to be removed (as you see above).
Well, if I comment out
[java] gameSettings.setRenderer(“LWJGL-OpenGL2”);[/java]
I get that:
[java]Exception in thread “main” java.lang.NullPointerException
at com.jme3.system.JmeSystem.newContext(JmeSystem.java:269)
at com.jme3.app.Application.start(Application.java:321)
at com.jme3.app.Application.start(Application.java:304)
at com.madjack.games.sc.Base.start(Base.java:94)
at com.madjack.games.sc.Base.main(Base.java:50)
Java Result: 1[/java]
Line 269 being:
[java] if (settings.getRenderer().equals(“NULL”)
|| contextType == JmeContext.Type.Headless){[/java]
Maybe it should be …toString().equals(“NULL”) ?
shrug
So, in short, if I don’t explicitly specify the renderer, it crashes. There’s nothing else in the start() method that is posted above.
For now I’ll use OpenGL2. At least I know why I had problems.