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() {
int stride = 0; for(VertexBuffer vb : mesh.getBufferList()) { if (vb.getBufferType().equals(VertexBuffer.Type.Index) || vb.getBufferType().equals(VertexBuffer.Type.InterleavedData)){ continue; if (vb.getBufferType().equals(VertexBuffer.Type.Index) || vb.getBufferType().equals(VertexBuffer.Type.InterleavedData)){ continue; if (vb.getBufferType().equals(VertexBuffer.Type.Index) || vb.getBufferType().equals(VertexBuffer.Type.InterleavedData)){ continue; if (vb.getBufferType().equals(VertexBuffer.Type.Index) || vb.getBufferType().equals(VertexBuffer.Type.InterleavedData)){ continue;
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; } }