summaryrefslogtreecommitdiff
path: root/graphics/java/android/renderscript/Mesh.java
diff options
context:
space:
mode:
authorAlex Sakhartchouk <alexst@google.com>2010-07-12 15:50:32 -0700
committerAlex Sakhartchouk <alexst@google.com>2010-07-12 15:50:32 -0700
commit80a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41ae (patch)
tree1add64a0dee5bf0ac1c98b63bd3b43648ca7af50 /graphics/java/android/renderscript/Mesh.java
parentcefd8d9588230577356d24597acc04ce1e276582 (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.java32
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;