Renanse / Ardor3D

Ardor3D is a free Java based, professionally oriented, open source 3D graphics engine.
Other
227 stars 77 forks source link

Summary of issues when running examples on Mac OSX #95

Open jordanslott opened 3 years ago

jordanslott commented 3 years ago

I wanted to catalog issues I ran into when running the Ardor3D examples on Mac OSX (2018 Mac Mini, Catalina, Java 11 running from Eclipse), hopefully to help others (and perhaps I'm mistaken on certain points).

  1. The PropertiesDialog never appears. I suspect this is the same lwjgl3 issue that jME saw as well: https://hub.jmonkeyengine.org/t/lwjgl-v2-versus-v3/42125/74. I do not need this dialog for my purposes; I simply use an ardorSettings.properties file instead.

  2. Examples crash with the following error because of this line: new Thread(example).start();. Note that the common suggestion to use VM argument -XstartOnFirstThread did not fix the issue. To workaround I simply call example.run() on the main thread.

[LWJGL] Version: 3.2.3 build 13
[LWJGL]      OS: Mac OS X v10.15.7
[LWJGL]     JRE: 11.0.2 x86_64
[LWJGL]     JVM: Java HotSpot(TM) 64-Bit Server VM v11.0.2+9-LTS by Oracle Corporation
[LWJGL] Loading JNI library: lwjgl
[LWJGL]     Module: org.lwjgl
[LWJGL]     Loaded from org.lwjgl.librarypath: /var/folders/rd/fj31shf90jq1gngpwgpnwy0r0000gn/T/lwjgljslott/3.2.3-build-13/liblwjgl.dylib
[LWJGL] Warning: Failed to instantiate memory allocator: org.lwjgl.system.jemalloc.JEmallocAllocator. Using the system default.
[LWJGL] MemoryUtil allocator: StdlibAllocator
[LWJGL] Loading library: glfw
[LWJGL]     Module: org.lwjgl.glfw
[LWJGL]     Loaded from org.lwjgl.librarypath: /var/folders/rd/fj31shf90jq1gngpwgpnwy0r0000gn/T/lwjgljslott/3.2.3-build-13/libglfw.dylib
[LWJGL] Loading library: objc
[LWJGL]     Module: org.lwjgl
[LWJGL]     libobjc.dylib not found in org.lwjgl.librarypath=/var/folders/rd/fj31shf90jq1gngpwgpnwy0r0000gn/T/lwjgljslott/3.2.3-build-13
[LWJGL]     Loaded from system paths: /usr/lib/libobjc.A.dylib
[LWJGL] Loading library: com.apple.AppKit
[LWJGL]     Success
[LWJGL] GLFW can only be used for offscreen rendering.
2020-11-28 12:16:07.677 java[73623:2726150] *** Assertion failure in +[NSUndoManager _endTopLevelGroupings], /AppleInternal/BuildRoot/Library/Caches/com.apple.xbs/Sources/Foundation/Foundation-1677.104/Foundation/Misc.subproj/NSUndoManager.m:363
2020-11-28 12:16:07.677 java[73623:2726150] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+[NSUndoManager(NSInternal) _endTopLevelGroupings] is only safe to invoke on the main thread.'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007fff2f976b57 __exceptionPreprocess + 250
    1   libobjc.A.dylib                     0x00007fff686295bf objc_exception_throw + 48
    2   CoreFoundation                      0x00007fff2f99fd08 +[NSException raise:format:arguments:] + 88
    3   Foundation                          0x00007fff32091e9d -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 191
    4   Foundation                          0x00007fff31fce5ee +[NSUndoManager(NSPrivate) _endTopLevelGroupings] + 440
    5   AppKit                              0x00007fff2cb5b65c -[NSApplication run] + 864
    6   libglfw.dylib                       0x00000001128d4a85 libglfw.dylib + 68229
    7   libglfw.dylib                       0x00000001128ce416 libglfw.dylib + 42006
    8   ???                                 0x0000000112bce950 0x0 + 4609337680
    9   ???                                 0x0000000112bc8790 0x0 + 4609312656
)
libc++abi.dylib: terminating with uncaught exception of type NSException
  1. Terrain examples (e.g. ArrayTerrainExample) crashes with the following exception. Setting withShowDebugPanels(false) fixed the issue and I suspect the problem is related to that of #1 above.
Throwable caught in MainThread - exiting
java.lang.IllegalArgumentException: textureId must != 0
    at com.ardor3d.util.TextureKey.setTextureIdForContext(TextureKey.java:313)
    at com.ardor3d.image.Texture.setTextureIdForContext(Texture.java:361)
    at com.ardor3d.scene.state.lwjgl3.Lwjgl3TextureStateUtil.load(Lwjgl3TextureStateUtil.java:96)
    at com.ardor3d.scene.state.lwjgl3.Lwjgl3TextureStateUtil.apply(Lwjgl3TextureStateUtil.java:475)
    at com.ardor3d.renderer.lwjgl3.Lwjgl3Renderer.doApplyState(Lwjgl3Renderer.java:331)
    at com.ardor3d.renderer.AbstractRenderer.applyState(AbstractRenderer.java:90)
    at com.ardor3d.renderer.material.TechniquePass.applyRenderStates(TechniquePass.java:312)
    at com.ardor3d.renderer.material.TechniquePass.setupForDraw(TechniquePass.java:139)
    at com.ardor3d.scenegraph.Mesh.render(Mesh.java:278)
    at com.ardor3d.scenegraph.Mesh.render(Mesh.java:255)
    at com.ardor3d.renderer.lwjgl3.Lwjgl3Renderer.draw(Lwjgl3Renderer.java:248)
    at com.ardor3d.scenegraph.Mesh.draw(Mesh.java:370)
    at com.ardor3d.renderer.queue.AbstractRenderBucket.render(AbstractRenderBucket.java:82)
    at com.ardor3d.renderer.queue.RenderQueue.renderBuckets(RenderQueue.java:110)
    at com.ardor3d.renderer.lwjgl3.Lwjgl3Renderer.renderBuckets(Lwjgl3Renderer.java:108)
    at com.ardor3d.renderer.lwjgl3.Lwjgl3Renderer.renderBuckets(Lwjgl3Renderer.java:101)
    at com.ardor3d.example.ExampleBase.renderExample(ExampleBase.java:295)
    at com.ardor3d.example.ExampleBase.render(ExampleBase.java:277)
    at com.ardor3d.framework.lwjgl3.Lwjgl3CanvasRenderer.draw(Lwjgl3CanvasRenderer.java:122)
    at com.ardor3d.framework.lwjgl3.GLFWCanvas.draw(GLFWCanvas.java:179)
    at com.ardor3d.framework.FrameHandler.updateFrame(FrameHandler.java:91)
    at com.ardor3d.example.ExampleBase.run(ExampleBase.java:149)
    at com.ardor3d.example.ExampleBase.start(ExampleBase.java:406)
    at com.ardor3d.example.terrain.ArrayTerrainExample.main(ArrayTerrainExample.java:78)