Lwjgl3 on mac: Invalid ID (0) received when trying to create shader program

I’m stuck with switching my game from lwjgl2 to lwjgl3 on a mac. It works fine with lwjgl3 on Windoze but on my Mac I run into the following issues.

  1. MINOR: On the start screen, I have a spinning aircraft carrier. With v2 it looks like this:


    with v3 like this:

    Looks like an issue with gamma. But I have a “settings.setGammaCorrection(true);”

  2. MAJOR: When you start a game from the start screen, it loads a sky, lighting, water filter, postprocess filters, terrain and objects. Then you see the game screen for a split second, then the games stops with the exception
    com.jme3.renderer.RendererException: Invalid ID (0) received when trying to create shader program. at com.jme3.renderer.opengl.GLRenderer.updateShaderData(GLRenderer.java:1595) at com.jme3.renderer.opengl.GLRenderer.setShader(GLRenderer.java:1673) at com.jme3.material.logic.MultiPassLightingLogic.render(MultiPassLightingLogic.java:158) at com.jme3.material.Technique.render(Technique.java:167) at com.jme3.material.Material.render(Material.java:1052) at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:682) at com.jme3.renderer.queue.RenderQueue.renderGeometryList(RenderQueue.java:273) at com.jme3.renderer.queue.RenderQueue.renderQueue(RenderQueue.java:312) at com.jme3.renderer.RenderManager.renderViewPortQueues(RenderManager.java:961) at com.jme3.renderer.RenderManager.flushQueue(RenderManager.java:855) at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:1223) at com.jme3.water.WaterFilter.preFrame(WaterFilter.java:180) at com.jme3.post.FilterPostProcessor.preFrame(FilterPostProcessor.java:375) at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:1185) at com.jme3.renderer.RenderManager.render(RenderManager.java:1287) at com.jme3.app.SimpleApplication.update(SimpleApplication.java:278) at com.jme3.system.lwjgl.LwjglWindow.runLoop(LwjglWindow.java:628) at com.jme3.system.lwjgl.LwjglWindow.run(LwjglWindow.java:717) at com.jme3.system.lwjgl.LwjglWindow.create(LwjglWindow.java:552) at com.jme3.app.LegacyApplication.start(LegacyApplication.java:490) at com.jme3.app.LegacyApplication.start(LegacyApplication.java:442) at com.jme3.app.SimpleApplication.start(SimpleApplication.java:126) at net.carriercommander.CarrierCommander.main(CarrierCommander.java:85)
    .
    I played around with disabling all filters and only loading a minimal set of objects but to no avail. I still get the same error - but from different shaders (found out while debugging).

To recreate, please clone this repo and in /pom.xml switch to lwjgl3 in line 58.

OSX 12.6.7, MBP 2015 (Retina), OpenJdk17, starting from within IntelliJ, UI = Lemur

Take a look at this topic : java.lang.IllegalArgumentException: object id must be greater than zero on Mac

1 Like