commit b5be333ad02ad7104885090a880bbf4f80346c62
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue May 19 15:43:52 2020 +0100

    3 fixes for MeshBase.apply(VertexEffect).
    This still does not work though.

diff --git a/src/main/java/org/distorted/library/main/DistortedLibrary.java b/src/main/java/org/distorted/library/main/DistortedLibrary.java
index 77709e4..62d7de3 100644
--- a/src/main/java/org/distorted/library/main/DistortedLibrary.java
+++ b/src/main/java/org/distorted/library/main/DistortedLibrary.java
@@ -482,9 +482,8 @@ public class DistortedLibrary
       GLES30.glDrawArrays( GLES30.GL_POINTS, 0, num );
       InternalRenderState.restoreDrawing();
       GLES30.glEndTransformFeedback();
-      GLES30.glBindBufferBase(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0, 0);
-
       mesh.copyTransformToVertex();
+      GLES30.glBindBufferBase(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0, 0);
       }
     }
 
diff --git a/src/main/java/org/distorted/library/main/InternalBuffer.java b/src/main/java/org/distorted/library/main/InternalBuffer.java
index ccfa2cc..f9d4064 100644
--- a/src/main/java/org/distorted/library/main/InternalBuffer.java
+++ b/src/main/java/org/distorted/library/main/InternalBuffer.java
@@ -55,13 +55,6 @@ public class InternalBuffer extends InternalObject
     recreate();
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  public int getIndex()
-    {
-    return mIndex[0];
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // must be called from a thread holding OpenGL Context.
 
diff --git a/src/main/java/org/distorted/library/mesh/MeshBase.java b/src/main/java/org/distorted/library/mesh/MeshBase.java
index d9b0cf2..f731edc 100644
--- a/src/main/java/org/distorted/library/mesh/MeshBase.java
+++ b/src/main/java/org/distorted/library/mesh/MeshBase.java
@@ -273,15 +273,17 @@ public abstract class MeshBase
      {
      float posX, posY, posZ, norX, norY, norZ;
      FloatBuffer feedback=null;
-     ByteBuffer buffer = (ByteBuffer)GLES30.glMapBufferRange( GLES30.GL_TRANSFORM_FEEDBACK, 0, 6*4*mNumVertices,
-                                                                GLES30.GL_MAP_READ_BIT);
+
+     ByteBuffer buffer = (ByteBuffer)GLES30.glMapBufferRange( GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0, TRAN_SIZE*mNumVertices,
+                                                              GLES30.GL_MAP_READ_BIT);
      if( buffer!=null )
        {
        feedback = buffer.order(ByteOrder.nativeOrder()).asFloatBuffer();
        }
      else
        {
-       Log.e("mesh", "print: failed to map tf buffer");
+       int error = GLES30.glGetError();
+       Log.e("mesh", "failed to map tf buffer, error="+error);
        }
 
      if( feedback!=null )
@@ -304,6 +306,8 @@ public abstract class MeshBase
          mVertAttribs[vertex*VERT_ATTRIBS + NOR_ATTRIB + 2 ] = norZ;
          }
        }
+
+     GLES30.glUnmapBuffer(GLES30.GL_TRANSFORM_FEEDBACK);
      }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -346,7 +350,7 @@ public abstract class MeshBase
  */
    public int getTFO()
      {
-     return mTFO.getIndex();
+     return mTFO.createImmediately(mNumVertices*TRAN_SIZE, null);
      }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
