@Override
protected void initExample() {
_canvas.setTitle("TestSharedMesh");
_canvas.getCanvasRenderer().getCamera().setLocation(new Vector3(0, 0, 90));
final Mesh mesh = new Mesh();
final MeshData meshData = mesh.getMeshData();
final FloatBuffer vertexBuffer = BufferUtils.createVector3Buffer(16);
vertexBuffer.put(-30).put(0).put(0);
vertexBuffer.put(-40).put(0).put(0);
vertexBuffer.put(-40).put(10).put(0);
vertexBuffer.put(-30).put(10).put(0);
vertexBuffer.put(-10).put(0).put(0);
vertexBuffer.put(-20).put(0).put(0);
vertexBuffer.put(-20).put(10).put(0);
vertexBuffer.put(-10).put(10).put(0);
vertexBuffer.put(10).put(0).put(0);
vertexBuffer.put(20).put(0).put(0);
vertexBuffer.put(20).put(10).put(0);
vertexBuffer.put(10).put(10).put(0);
vertexBuffer.put(30).put(0).put(0);
vertexBuffer.put(40).put(0).put(0);
vertexBuffer.put(40).put(10).put(0);
vertexBuffer.put(30).put(10).put(0);
meshData.setVertexBuffer(vertexBuffer);
final IndexBufferData<?> indices = BufferUtils.createIndexBufferData(18, vertexBuffer.capacity() - 1);
// Strips
indices.put(0).put(3).put(1).put(2);
indices.put(4).put(7).put(5).put(6);
// Quad
indices.put(8).put(9).put(10).put(11);
// Triangles
indices.put(12).put(13).put(15);
indices.put(13).put(14).put(15);
meshData.setIndices(indices);
// Setting sub primitive data
final int[] indexLengths = new int[] { 4, 4, 4, 6 };
meshData.setIndexLengths(indexLengths);
final IndexMode[] indexModes = new IndexMode[] { IndexMode.TriangleStrip, IndexMode.TriangleStrip,
IndexMode.Quads, IndexMode.Triangles };
meshData.setIndexModes(indexModes);
mesh.updateModelBound();
_root.attachChild(mesh);
}