Skip to content

InstancedNode : get exceptions on Android with jme3.1-stable #635

@jmecn

Description

@jmecn

Just tried jme3test.scene.instance.TestInstanceNode on Android. I get two exceptions.

** Exception 1**

com.jme3.app.AndroidHarness: SEVERE Exception thrown in Thread[GLThread 183,5,main]
com.jme3.renderer.RendererException: compile error in: ShaderSource[name=Common/MatDefs/Misc/Unshaded.vert, defines, type=Vertex, language=GLSL100]
                           ERROR: 0:158: '=' : global variable initializers must be constant expressions 

                               at com.jme3.renderer.opengl.GLRenderer.updateShaderSourceData(GLRenderer.java:1200)
                               at com.jme3.renderer.opengl.GLRenderer.updateShaderData(GLRenderer.java:1227)
                               at com.jme3.renderer.opengl.GLRenderer.setShader(GLRenderer.java:1291)
                               at com.jme3.material.logic.DefaultTechniqueDefLogic.render(DefaultTechniqueDefLogic.java:94)
                               at com.jme3.material.Technique.render(Technique.java:166)
                               at com.jme3.material.Material.render(Material.java:968)
                               at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:616)
                               at com.jme3.renderer.queue.RenderQueue.renderGeometryList(RenderQueue.java:266)
                               at com.jme3.renderer.queue.RenderQueue.renderQueue(RenderQueue.java:305)
                               at com.jme3.renderer.RenderManager.renderViewPortQueues(RenderManager.java:870)
                               at com.jme3.renderer.RenderManager.flushQueue(RenderManager.java:781)
                               at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:1097)
                               at com.jme3.renderer.RenderManager.render(RenderManager.java:1145)
                               at com.jme3.app.SimpleApplication.update(SimpleApplication.java:253)
                               at com.jme3.app.AndroidHarness.update(AndroidHarness.java:497)
                               at com.jme3.system.android.OGLESContext.onDrawFrame(OGLESContext.java:336)
                               at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1548)
                               at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1259)

I checked the source, maybe something wrong in Common/ShadeLib/Instance.glsllib, line 43:

mat4 worldMatrix = mat4(vec4(inInstanceData[0].xyz, 0.0), 
                        vec4(inInstanceData[1].xyz, 0.0), 
                        vec4(inInstanceData[2].xyz, 0.0), 
                        vec4(inInstanceData[3].xyz, 1.0));

because it said that ERROR: 0:158: '=' : global variable initializers must be constant expressions

** Exception 2**

com.jme3.util.BufferUtils: SEVERE {0}
                         java.lang.IllegalArgumentException: Expected receiver of type sun.nio.ch.DirectBuffer, but got java.nio.ByteBufferAsFloatBuffer
                             at java.lang.reflect.Method.invoke(Native Method)
                             at com.jme3.util.BufferUtils.destroyDirectBuffer(BufferUtils.java:1330)
                             at com.jme3.scene.instancing.InstancedGeometry.setMaxNumInstances(InstancedGeometry.java:196)
                             at com.jme3.scene.instancing.InstancedGeometry.addInstance(InstancedGeometry.java:322)
                             at com.jme3.scene.instancing.InstancedNode.addToInstancedGeometry(InstancedNode.java:239)
                             at com.jme3.scene.instancing.InstancedNode.instance(InstancedNode.java:293)
                             at com.jme3.scene.instancing.InstancedNode.instance(InstancedNode.java:300)
                             at com.jme3.scene.instancing.InstancedNode.instance(InstancedNode.java:306)
                             at net.jmecn.mygame.TestInstanceNode.simpleInitApp(TestInstanceNode.java:94)
                             at com.jme3.app.SimpleApplication.initialize(SimpleApplication.java:220)
                             at com.jme3.app.AndroidHarness.initialize(AndroidHarness.java:478)
                             at com.jme3.system.android.OGLESContext.onDrawFrame(OGLESContext.java:328)
                             at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1548)
                             at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1259)

I checked the source of com.jme3.util.BufferUtils.java, the bug seems has been fixed.

848a921

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions