Cannot render mesh without shader bound

I made a new project and used the java source from TestBumpModel.java. I compiled and ran it successfully on mac and android. I then replaced the two lines



Spatial signpost = (Spatial) assetManager.loadAsset(new OgreMeshKey(“Models/Sign Post/Sign Post.mesh.xml”));

signpost.setMaterial( (Material) assetManager.loadMaterial(“Models/Sign Post/Sign Post.j3m”));



with the line



Spatial signpost = assetManager.loadModel(“Models/test/plane2.j3o”);



plane2.j3o is a simple plane made in Sketchup, exported as obj format model and then converted to j3o using the sdk.



The program runs as expected on mac but gives ‘cannot render mesh without shader bound’ on the android.



What is that error and how do I get rid of it?



Morris

Check the log higher up, there’s probably an error with some shader

Here is a snippet from the ddms log. I see errors in there but I have no idea what the significance in.



Morris





09-23 12:00:06.957: DEBUG/dalvikvm(3684): GC_CONCURRENT freed 1037K, 51% free 3749K/7559K, external 2138K/2394K, paused 2ms+6ms

09-23 12:00:07.177: INFO/MaterialDef(3684): INFO MaterialDef 12:00:07 PM Loaded material definition: Phong Lighting

09-23 12:00:07.247: DEBUG/dalvikvm(3684): GC_CONCURRENT freed 1089K, 51% free 3720K/7559K, external 2138K/2394K, paused 2ms+3ms

09-23 12:00:07.377: DEBUG/dalvikvm(1296): GC_EXPLICIT freed 454K, 46% free 5883K/10887K, external 4373K/4925K, paused 100ms

09-23 12:00:07.538: INFO/com.jme3.scene.Node(3684): INFO Node 12:00:07 PM Child (plane2-objnode) attached to this node (Root Node)

09-23 12:00:07.648: INFO/com.jme3.scene.Node(3684): INFO Node 12:00:07 PM Child (Light) attached to this node (Root Node)

09-23 12:00:07.648: INFO/OGLESContext(3684): GL Surface changed, width: 800 height: 480

09-23 12:00:07.728: DEBUG/dalvikvm(3684): GC_CONCURRENT freed 623K, 45% free 4187K/7559K, external 2160K/2394K, paused 3ms+9ms

09-23 12:00:07.768: WARN/OGLESShaderRenderer(3684): glError 1280

09-23 12:00:07.948: DEBUG/dalvikvm(3684): GC_CONCURRENT freed 1408K, 50% free 4069K/8071K, external 2168K/2394K, paused 2ms+9ms

09-23 12:00:08.118: DEBUG/dalvikvm(3684): GC_CONCURRENT freed 1294K, 51% free 4009K/8071K, external 2168K/2394K, paused 3ms+6ms

09-23 12:00:08.198: WARN/OGLESShaderRenderer(3684): WARNING OGLESShaderRenderer 12:00:08 PM shader link failure.

09-23 12:00:08.198: WARN/OGLESShaderRenderer(3684): Error: varying variables do not fit in 8 vectors.

09-23 12:00:08.198: WARN/OGLESShaderRenderer(3684): Error: varying variables do not fit in 8 vectors.

09-23 12:00:08.198: WARN/OGLESShaderRenderer(3684): shader is not usable.

09-23 12:00:08.218: WARN/dalvikvm(3684): threadid=9: thread exiting with uncaught exception (group=0x4001d570)

09-23 12:00:08.218: ERROR/AndroidHarness(3684): java.lang.IllegalStateException: Cannot render mesh without shader bound

09-23 12:00:08.218: ERROR/AndroidHarness(3684): Exception thrown in Thread[GLThread 11,5,main]: com.jme3.renderer.android.OGLESShaderRenderer.setVertexAttrib_Array(2936) com.jme3.renderer.android.OGLESShaderRenderer.setVertexAttrib_Array(2945) com.jme3.renderer.android.OGLESShaderRenderer.renderMeshVertexArray(2662) com.jme3.renderer.android.OGLESShaderRenderer.renderMesh(2773) com.jme3.material.Material.renderMultipassLighting(790) com.jme3.material.Material.render(1016) com.jme3.renderer.RenderManager.renderGeometry(656) com.jme3.renderer.queue.RenderQueue.renderGeometryList(301) com.jme3.renderer.queue.RenderQueue.renderQueue(357) com.jme3.renderer.RenderManager.renderViewPortQueues(893) com.jme3.renderer.RenderManager.flushQueue(849) com.jme3.renderer.RenderManager.renderViewPort(1125) com.jme3.renderer.RenderManager.render(1167) com.jme3.app.SimpleApplication.update(263) com.jme3.system.android.OGLESContext.onDrawFrame(418) android.opengl.GLSurfaceView$GLThread.guardedRun(1363) android.opengl.GLSurfaceView$GLThread.run(1118)

09-23 12:00:08.278: DEBUG/dalvikvm(3684): GC_EXTERNAL_ALLOC freed 890K, 52% free 3877K/8071K, external 2227K/2394K, paused 44ms

Looks like some shader is hitting the varying limit, probably Lighting. Make sure you’re using the jME3 SVN build since the nightly is from August and is outdated at this point

Could you clarify about what I should get from the svn nightly and where I should put it. I’m kinda new to a lot of the jme stuff.



Morris

What he said only applies when you are not using the jMonkeyEngine SDK to deploy to android. If you are using for example eclipse, refer to the documentation on getting jME3 from svn.

I am using the jme SDK to deploy directly to the phone.