diff options
author | Alex Sakhartchouk <alexst@google.com> | 2010-07-12 15:50:32 -0700 |
---|---|---|
committer | Alex Sakhartchouk <alexst@google.com> | 2010-07-12 15:50:32 -0700 |
commit | 80a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41ae (patch) | |
tree | 1add64a0dee5bf0ac1c98b63bd3b43648ca7af50 /graphics/java/android/renderscript/Mesh.java | |
parent | cefd8d9588230577356d24597acc04ce1e276582 (diff) |
Work on synchronizing a3d created files and java layer.
Adding culling to ProgramRaster
Change-Id: I58ccc82d37edc9539289d5eba44ea0e720874af5
Diffstat (limited to 'graphics/java/android/renderscript/Mesh.java')
-rw-r--r-- | graphics/java/android/renderscript/Mesh.java | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/graphics/java/android/renderscript/Mesh.java b/graphics/java/android/renderscript/Mesh.java index 5a538787d601..4bee97a90c60 100644 --- a/graphics/java/android/renderscript/Mesh.java +++ b/graphics/java/android/renderscript/Mesh.java @@ -59,6 +59,38 @@ public class Mesh extends BaseObj { return mPrimitives[slot]; } + @Override + void updateFromNative() { + int vtxCount = mRS.nMeshGetVertexBufferCount(mID); + int idxCount = mRS.nMeshGetIndexCount(mID); + + int[] vtxIDs = new int[vtxCount]; + int[] idxIDs = new int[idxCount]; + int[] primitives = new int[idxCount]; + + mRS.nMeshGetVertices(mID, vtxIDs, vtxCount); + mRS.nMeshGetIndices(mID, idxIDs, primitives, vtxCount); + + mVertexBuffers = new Allocation[vtxCount]; + mIndexBuffers = new Allocation[idxCount]; + mPrimitives = new Primitive[idxCount]; + + for(int i = 0; i < vtxCount; i ++) { + if(vtxIDs[i] != 0) { + mVertexBuffers[i] = new Allocation(vtxIDs[i], mRS); + mVertexBuffers[i].updateFromNative(); + } + } + + for(int i = 0; i < idxCount; i ++) { + if(idxIDs[i] != 0) { + mIndexBuffers[i] = new Allocation(idxIDs[i], mRS); + mIndexBuffers[i].updateFromNative(); + } + mPrimitives[i] = Primitive.values()[primitives[i]]; + } + } + public static class Builder { RenderScript mRS; |