[SOLVED] Switched to Lwjgl3 and this happened "OpenGL 2.0 or higher is required for jMonkeyEngine"

I downloaded the last driver, but with no hope
the same problem remain

@oxplay2 @tonihele @chavalot
I tried a pure LWJGL3 Example and it worked just fine



What you’re not showing there is what version of OpenGL that lwjgl code is setting up and targeting…

Where?
Do you mean the lwjgl3 example program or the jmonkey program?

The lwjgl3 program. It has to be initializing a context somewhere. If you aren’t doing that yourself, track down where it’s coming from and see how it differs/what type of context it is.

1 Like

Ok I’ll check this out and I’ll reply you back

I added System.out.println(GL11.glGetString(GL_VERSION)); to the program and it returned this
3.2.0 - Build 31.0.101.2114

Updated
Based on the docs, it says that

public static GLCapabilities createCapabilities(boolean forwardCompatible)

Creates a new GLCapabilities instance for the OpenGL context that is current in the current thread.

Depending on the current context, the instance returned may or may not contain the deprecated functionality removed since OpenGL version 3.1. The forwardCompatible flag will force LWJGL to not load the deprecated functions, even if the current context exposes them.

This method calls setCapabilities(GLCapabilities) with the new instance before returning.

@Ali_RS @sailsman63 @oxplay2
It worked after I replaced version 3.3.1 with 3.2.3, and when I omitted any logical condition with capabilities.OpenGL in “com.jme3.system.lwjgl.LwjglContext.initContext()” because it returns false anyway for all versions

what was the error again for GL version 3.3.1 ? (i mean when you skip logical condition)

so what you say is that older version work, but higher version dont?

can you also try like 4.5/etc

I put these to see the return values:

Summary

System.out.println("capabilities.OpenGL11= "+capabilities.OpenGL11);
System.out.println("capabilities.OpenGL12= "+capabilities.OpenGL12);
System.out.println("capabilities.OpenGL13= "+capabilities.OpenGL13);
System.out.println("capabilities.OpenGL14= "+capabilities.OpenGL14);
System.out.println("capabilities.OpenGL15= "+capabilities.OpenGL15);
System.out.println("capabilities.OpenGL20= "+capabilities.OpenGL20);
System.out.println("capabilities.OpenGL21= "+capabilities.OpenGL21);
System.out.println("capabilities.OpenGL30= "+capabilities.OpenGL30);
System.out.println("capabilities.OpenGL31= "+capabilities.OpenGL31);
System.out.println("capabilities.OpenGL32= "+capabilities.OpenGL32);
System.out.println("capabilities.OpenGL33= "+capabilities.OpenGL33);
System.out.println("capabilities.OpenGL40= "+capabilities.OpenGL40);
System.out.println("capabilities.OpenGL41= "+capabilities.OpenGL41);
System.out.println("capabilities.OpenGL42= "+capabilities.OpenGL42);
System.out.println("capabilities.OpenGL43= "+capabilities.OpenGL43);
System.out.println("capabilities.OpenGL44= "+capabilities.OpenGL44);
System.out.println("capabilities.OpenGL45= "+capabilities.OpenGL45);
System.out.println("capabilities.OpenGL46= "+capabilities.OpenGL46);


and it returns

Summary

capabilities.OpenGL11= false
capabilities.OpenGL12= false
capabilities.OpenGL13= false
capabilities.OpenGL14= false
capabilities.OpenGL15= false
capabilities.OpenGL20= false
capabilities.OpenGL21= false
capabilities.OpenGL30= false
capabilities.OpenGL31= false
capabilities.OpenGL32= false
capabilities.OpenGL33= false
capabilities.OpenGL40= false
capabilities.OpenGL41= false
capabilities.OpenGL42= false
capabilities.OpenGL43= false
capabilities.OpenGL44= false
capabilities.OpenGL45= false
capabilities.OpenGL46= false


when I use LWJGL version 3.3.1 with omitted the condition of capabilties produces this error

Summary

FATAL ERROR in native method: Thread[jME3 Main,5,main]: No context is current or a function that is not available in the current context was called. The JVM will abort execution.
at org.lwjgl.opengl.GL11C.nglGetString(Native Method)
at org.lwjgl.opengl.GL11C.glGetString(GL11C.java:978)
at org.lwjgl.opengl.GL11.glGetString(GL11.java:3100)
at com.jme3.renderer.lwjgl.LwjglGL.glGetString(LwjglGL.java:348)
at com.jme3.renderer.opengl.GLRenderer.loadCapabilitiesGL2(GLRenderer.java:211)
at com.jme3.renderer.opengl.GLRenderer.loadCapabilities(GLRenderer.java:619)
at com.jme3.renderer.opengl.GLRenderer.initialize(GLRenderer.java:640)
at com.jme3.system.lwjgl.LwjglContext.initContext(LwjglContext.java:242)
at com.jme3.system.lwjgl.LwjglContext.initContextFirstTime(LwjglContext.java:189)
at com.jme3.system.lwjgl.LwjglContext.internalCreate(LwjglContext.java:499)
at com.jme3.system.lwjgl.LwjglWindow.initInThread(LwjglWindow.java:586)
at com.jme3.system.lwjgl.LwjglWindow.run(LwjglWindow.java:704)
at java.lang.Thread.run(java.base@11.0.12/Thread.java:829)


but with LWJGL 3.2.3 it worked just fine but without the capabilities condition

2 Likes

So if it works fine with LWJGL 3.2.3 but does not work with LWJGL 3.3.1 then apparently there is a bug in LWJGL 3.3.1.

Can you also try with LWJGL 3.3.2-snapshot?

If the issue still exists in 3.3.2-snapshot then you may consider reporting the issue on the LWJGL GitHub page also.

3 Likes

It worked with 3.3.2-snapshot

3 Likes

Glad that worked :slightly_smiling_face:

We have also another issue that apparently is fixed in 3.3.2-snapshot as well. I will update JME to use LWJGL 3.3.2 when it is released.

5 Likes

What about the issue this produces

It always returning false no matter what version I choose
Should I report it to them?
Update it fixed in the new version
capabilities.OpenGL11= true
capabilities.OpenGL12= true
capabilities.OpenGL13= true
capabilities.OpenGL14= true
capabilities.OpenGL15= true
capabilities.OpenGL20= true
capabilities.OpenGL21= true
capabilities.OpenGL30= true
capabilities.OpenGL31= true
capabilities.OpenGL32= true
capabilities.OpenGL33= true
capabilities.OpenGL40= false
capabilities.OpenGL41= false
capabilities.OpenGL42= false
capabilities.OpenGL43= false
capabilities.OpenGL44= false
capabilities.OpenGL45= false
capabilities.OpenGL46= false

Another update it stops at capabilities.OpenGL33 because of appSettings.setRenderer(AppSettings.LWJGL_OPENGL33);

It all works now
thank you all

ye, so looks like its definetly just LWJGL issue, but idk how they released it so broken.

so with 3.3.2 CAPS works and FATAL ERROR do not appear.

Tho i see:
capabilities.OpenGL33= true
capabilities.OpenGL40= false
capabilities.OpenGL41= false
capabilities.OpenGL42= false
capabilities.OpenGL43= false
capabilities.OpenGL44= false
capabilities.OpenGL45= false
capabilities.OpenGL46= false

while you have support for 40+ version too?

When I omitted the


// appSettings.setRenderer(AppSettings.LWJGL_OPENGL33);


it gives all true with exception of “46”

ah ok, then looks like all is fine with new version. Nice.

Ye, Thanks @Ali_RS for JME update issues. I hope this will be quickly fixed along with 1778 issue

and thanks @carpenter for detailed testing and debugging that really helped much.

3 Likes

I couldn’t do it without you all
What a great community you are
Thank you all

6 Likes