commit 227b9bca380c3c420dd9c6a424e2e9ddeb9fb02a
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Nov 27 00:34:13 2018 +0000

    Minor simplifications in Mesh.

diff --git a/src/main/java/org/distorted/library/mesh/MeshBase.java b/src/main/java/org/distorted/library/mesh/MeshBase.java
index 35800cf..48ee521 100644
--- a/src/main/java/org/distorted/library/mesh/MeshBase.java
+++ b/src/main/java/org/distorted/library/mesh/MeshBase.java
@@ -31,24 +31,25 @@ import java.nio.FloatBuffer;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 /**
- * Abstract class which represents a Mesh, ie 3 arrays of Vertex attributes: 1) positions
- * 2) normals 3) texture coordinates.
+ * Abstract class which represents a Mesh, i.e. an array of vertices (rendered as a TRIANGLE_STRIP)
  * <p>
  * If you want to render to a particular shape, extend from here, construct a float array
  * containing per-vertex attributes, and call back setData().
  */
 public abstract class MeshBase
    {
-   private static final int POS_DATA_SIZE= 3;
-   private static final int NOR_DATA_SIZE= 3;
-   private static final int INF_DATA_SIZE= 3;
-   private static final int TEX_DATA_SIZE= 2;
+   // sizes of attributes of an individual vertex.
+   private static final int POS_DATA_SIZE= 3; // vertex coordinates: x,y,z
+   private static final int NOR_DATA_SIZE= 3; // normal vector: x,y,z
+   private static final int INF_DATA_SIZE= 3; // 'inflate' vector: x,y,z
+   private static final int TEX_DATA_SIZE= 2; // texture coordinates
 
    static final int POS_ATTRIB   = 0;
    static final int NOR_ATTRIB   = POS_DATA_SIZE;
    static final int INF_ATTRIB   = POS_DATA_SIZE + NOR_DATA_SIZE;
    static final int TEX_ATTRIB   = POS_DATA_SIZE + NOR_DATA_SIZE + INF_DATA_SIZE;
-   static final int VERT_ATTRIBS = POS_DATA_SIZE + NOR_DATA_SIZE + INF_DATA_SIZE + TEX_DATA_SIZE;
+   static final int VERT_ATTRIBS = POS_DATA_SIZE + NOR_DATA_SIZE + INF_DATA_SIZE + TEX_DATA_SIZE;  // number of attributes of a 'normal' vertex
+   static final int TRAN_ATTRIBS = POS_DATA_SIZE + POS_DATA_SIZE;                                  // number of attributes of a transform feedback vertex
 
    private static final int BYTES_PER_FLOAT = 4;
 
@@ -56,16 +57,15 @@ public abstract class MeshBase
    private static final int OFFSET_NOR = NOR_ATTRIB*BYTES_PER_FLOAT;
    private static final int OFFSET_INF = INF_ATTRIB*BYTES_PER_FLOAT;
    private static final int OFFSET_TEX = TEX_ATTRIB*BYTES_PER_FLOAT;
-
-   private static final int TFSIZE  = (POS_DATA_SIZE+POS_DATA_SIZE                            )*BYTES_PER_FLOAT;
-   private static final int VERTSIZE= (POS_DATA_SIZE+NOR_DATA_SIZE+INF_DATA_SIZE+TEX_DATA_SIZE)*BYTES_PER_FLOAT;
+   private static final int TRAN_SIZE  = TRAN_ATTRIBS*BYTES_PER_FLOAT;
+   private static final int VERT_SIZE  = VERT_ATTRIBS*BYTES_PER_FLOAT;
 
    private boolean mShowNormals;       // when rendering this mesh, draw normal vectors?
    private DistortedBuffer mVBO, mTFO; // main vertex buffer and transform feedback buffer
    private final float zFactor;        // strange workaround for the fact that we need to somehow store the 'depth'
                                        // of the Mesh. Used in DistortedEffects. See DistortedTexture.getDepth().
    private int mNumVertices;
-   private FloatBuffer mVertAttribs;   // packed: PosX,PosY,PosZ, NorX,NorY,NorZ, TexS,TexT
+   private FloatBuffer mVertAttribs;   // packed: PosX,PosY,PosZ, NorX,NorY,NorZ, InfX,InfY,InfZ, TexS,TexT
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -81,15 +81,15 @@ public abstract class MeshBase
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // when a derived class is done computing its mesh, it has to call this method.
 
-   void setData(int numVertices, float[] vertexAttribs)
+   void setAttribs(float[] vertexAttribs)
      {
-     mNumVertices = numVertices;
+     mNumVertices = vertexAttribs.length/VERT_ATTRIBS;
 
-     mVertAttribs = ByteBuffer.allocateDirect(mNumVertices*VERTSIZE).order(ByteOrder.nativeOrder()).asFloatBuffer();
+     mVertAttribs = ByteBuffer.allocateDirect(mNumVertices*VERT_SIZE).order(ByteOrder.nativeOrder()).asFloatBuffer();
      mVertAttribs.put(vertexAttribs).position(0);
 
-     mVBO.setData(numVertices*VERTSIZE, mVertAttribs);
-     mTFO.setData(numVertices*TFSIZE  , null        );
+     mVBO.setData(mNumVertices*VERT_SIZE, mVertAttribs);
+     mTFO.setData(mNumVertices*TRAN_SIZE, null        );
      }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -134,10 +134,10 @@ public abstract class MeshBase
    public void bindVertexAttribs(DistortedProgram program)
      {
      GLES31.glBindBuffer(GLES31.GL_ARRAY_BUFFER, mVBO.mIndex[0] );
-     GLES31.glVertexAttribPointer(program.mAttribute[0], MeshBase.POS_DATA_SIZE, GLES31.GL_FLOAT, false, MeshBase.VERTSIZE, MeshBase.OFFSET_POS);
-     GLES31.glVertexAttribPointer(program.mAttribute[1], MeshBase.NOR_DATA_SIZE, GLES31.GL_FLOAT, false, MeshBase.VERTSIZE, MeshBase.OFFSET_NOR);
-     GLES31.glVertexAttribPointer(program.mAttribute[2], MeshBase.INF_DATA_SIZE, GLES31.GL_FLOAT, false, MeshBase.VERTSIZE, MeshBase.OFFSET_INF);
-     GLES31.glVertexAttribPointer(program.mAttribute[3], MeshBase.TEX_DATA_SIZE, GLES31.GL_FLOAT, false, MeshBase.VERTSIZE, MeshBase.OFFSET_TEX);
+     GLES31.glVertexAttribPointer(program.mAttribute[0], POS_DATA_SIZE, GLES31.GL_FLOAT, false, VERT_SIZE, OFFSET_POS);
+     GLES31.glVertexAttribPointer(program.mAttribute[1], NOR_DATA_SIZE, GLES31.GL_FLOAT, false, VERT_SIZE, OFFSET_NOR);
+     GLES31.glVertexAttribPointer(program.mAttribute[2], INF_DATA_SIZE, GLES31.GL_FLOAT, false, VERT_SIZE, OFFSET_INF);
+     GLES31.glVertexAttribPointer(program.mAttribute[3], TEX_DATA_SIZE, GLES31.GL_FLOAT, false, VERT_SIZE, OFFSET_TEX);
      GLES31.glBindBuffer(GLES31.GL_ARRAY_BUFFER, 0);
      }
 
@@ -150,7 +150,7 @@ public abstract class MeshBase
    public void bindTransformAttribs(DistortedProgram program)
      {
      GLES31.glBindBuffer(GLES31.GL_ARRAY_BUFFER, mTFO.mIndex[0] );
-     GLES31.glVertexAttribPointer(program.mAttribute[0], MeshBase.POS_DATA_SIZE, GLES31.GL_FLOAT, false, 0, 0);
+     GLES31.glVertexAttribPointer(program.mAttribute[0], POS_DATA_SIZE, GLES31.GL_FLOAT, false, 0, 0);
      GLES31.glBindBuffer(GLES31.GL_ARRAY_BUFFER, 0);
      }
 
diff --git a/src/main/java/org/distorted/library/mesh/MeshCubes.java b/src/main/java/org/distorted/library/mesh/MeshCubes.java
index caa6c7a..232bbac 100644
--- a/src/main/java/org/distorted/library/mesh/MeshCubes.java
+++ b/src/main/java/org/distorted/library/mesh/MeshCubes.java
@@ -750,7 +750,7 @@ public class MeshCubes extends MeshBase
      if( remainingVert!=0 )
        android.util.Log.e("MeshCubes", "remainingVert " +remainingVert );
 
-     setData(numVertices, attribs);
+     setAttribs(attribs);
      }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/library/mesh/MeshFlat.java b/src/main/java/org/distorted/library/mesh/MeshFlat.java
index 417f117..89dc122 100644
--- a/src/main/java/org/distorted/library/mesh/MeshFlat.java
+++ b/src/main/java/org/distorted/library/mesh/MeshFlat.java
@@ -196,6 +196,6 @@ public class MeshFlat extends MeshBase
     if( remainingVert!=0 )
       android.util.Log.d("MeshFlat", "remainingVert " +remainingVert );
 
-    setData(numVertices, attribs);
+    setAttribs(attribs);
     }
  }
\ No newline at end of file
