|| qName.equals("sharedgeometry")) { for (VertexBuffer buf : mesh.getBufferList().getArray()) { Buffer data = buf.getData(); if (data.position() != 0) {
public static void dumpMesh(Mesh m) { for (VertexBuffer vertexBuffer : m.getBufferList().getArray()) { System.err.println(vertexBuffer.getBufferType()); System.err.println(vertexBuffer.getFormat());
Map<VertexBuffer.Type, Integer> typesCount = new EnumMap<VertexBuffer.Type, Integer>(VertexBuffer.Type.class); for (Geometry geom : geoms) { for (VertexBuffer buffer : geom.getMesh().getBufferList()) { if (types.get(buffer.getBufferType()) == null) { types.put(buffer.getBufferType(), buffer); for (Geometry geom : geoms) { for (VertexBuffer buffer : geom.getMesh().getBufferList()) { Integer count = typesCount.get(buffer.getBufferType()); if (count != null && count < geoms.size()) {
mesh.getBufferList().remove(vertexBuffer); mesh.getBuffers().remove(bufferType.ordinal());
/** * Computes the number of remaining buffers on this mesh. * This is supposed to give a hint on how many attributes will be used in the material and computes the remaining available slots for the morph attributes. * However, the shader can declare attributes that are not used and not bound to a real buffer. * That's why we attempt to compile the shader later on to avoid any compilation crash. * This method is here to avoid too much render test iteration. * * @param mesh * @param renderer * @return */ private int getRemainingBuffers(Mesh mesh, Renderer renderer) { int nbUsedBuffers = 0; for (VertexBuffer vb : mesh.getBufferList().getArray()) { boolean isMorphBuffer = vb.getBufferType().ordinal() >= VertexBuffer.Type.MorphTarget0.ordinal() && vb.getBufferType().ordinal() <= VertexBuffer.Type.MorphTarget9.ordinal(); if (vb.getBufferType() == VertexBuffer.Type.Index || isMorphBuffer) continue; if (vb.getUsage() != VertexBuffer.Usage.CpuOnly) { nbUsedBuffers++; } } return renderer.getLimits().get(Limits.VertexAttributes) - nbUsedBuffers; }
&& mesh.getVertexCount() != 0 && mesh.getTriangleCount() != 0) { for (VertexBuffer vb : mesh.getBufferList().getArray()) { if (vb.getData() != null && vb.getUsage() != VertexBuffer.Usage.CpuOnly) { renderer.updateBufferData(vb);
for (VertexBuffer vb : mesh.getBufferList().getArray()) { if (vb.getBufferType() == Type.InterleavedData
for (VertexBuffer vb : mesh.getBufferList().getArray()) { if (vb.getBufferType() == Type.InterleavedData
SafeArrayList<VertexBuffer> oldVertexData = other.getBufferList(); for (VertexBuffer oldVb : oldVertexData) { if (oldVb.getBufferType() == VertexBuffer.Type.Index) {
for (VertexBuffer vb : geom.getMesh().getBufferList().getArray()) { int currentCompsForBuf = compsForBuf[vb.getBufferType().ordinal()]; if (vb.getBufferType() != VertexBuffer.Type.Index && currentCompsForBuf != 0 && currentCompsForBuf != vb.getNumComponents()) {
for (VertexBuffer vb : geom.getMesh().getBufferList().getArray()) { int currentCompsForBuf = compsForBuf[vb.getBufferType().ordinal()]; if (vb.getBufferType() != Type.Index && currentCompsForBuf != 0 && currentCompsForBuf != vb.getNumComponents()) {
public void optimize2() { for(Mesh mesh : meshSet) { mesh.setInterleaved(); for(VertexBuffer vb : mesh.getBufferList()) { System.out.println( "type = "+vb.getBufferType() + "stride = "+vb.getStride() + "offset "+vb.getOffset() ); } System.out.println("done"); } } String createVBKey(VertexBuffer vb) {
public void optimize3() { HashMap<String, VertexBuffer>vbMap = new HashMap<String, VertexBuffer>(); ArrayList<VertexBuffer> vbList = new ArrayList<VertexBuffer>(); for(Mesh mesh : meshSet) { vbList.clear(); for(VertexBuffer vb : mesh.getBufferList()) { if (vb.getBufferType().equals(VertexBuffer.Type.Index) || vb.getBufferType().equals(VertexBuffer.Type.InterleavedData)){ continue; } if (vb.getStride() > 0) { String key = createVBKey(vb); System.out.append("key = "+key); VertexBuffer vb2 = vbMap.get(key); if (vb2 != null) { vbList.add(vb2); } else { vbMap.put(key, vb); } } } for(VertexBuffer vb : vbList) { // mesh.setBuffer(vb); } } } public void optimize() {
public static void dumpMesh(Mesh m) { for (VertexBuffer vertexBuffer : m.getBufferList().getArray()) { System.err.println(vertexBuffer.getBufferType()); System.err.println(vertexBuffer.getFormat());
int calcInterleavedSize() { interleavedSize = 0; for(Mesh mesh : meshSet) { for(VertexBuffer vb : mesh.getBufferList()) { if (vb.getBufferType().equals(VertexBuffer.Type.Index) || vb.getBufferType().equals(VertexBuffer.Type.InterleavedData)){ continue; } int limit = vb.getData().capacity(); // interleavedSize += vb.getComponentsLength() * vb.get interleavedSize += limit * vb.getFormat().getComponentSize(); } } return interleavedSize; } }
&& mesh.getVertexCount() != 0 && mesh.getTriangleCount() != 0) { for (VertexBuffer vb : mesh.getBufferList().getArray()) { if (vb.getData() != null && vb.getUsage() != VertexBuffer.Usage.CpuOnly) { renderer.updateBufferData(vb);
for (VertexBuffer vb : mesh.getBufferList().getArray()) { if (vb.getBufferType() == Type.InterleavedData
for (VertexBuffer vb : mesh.getBufferList().getArray()) { if (vb.getBufferType() == Type.InterleavedData
for (VertexBuffer vb : mesh.getBufferList().getArray()) { if (vb.getBufferType() == Type.InterleavedData
for (VertexBuffer vb : mesh.getBufferList().getArray()) { if (vb.getBufferType() == Type.InterleavedData