commit dac831c134344f08838f8adfb7220e71fc95a294
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Tue May 9 17:36:49 2017 +0100

    Beginning of support for actual Transform Feedback.

diff --git a/src/main/java/org/distorted/library/DistortedEffects.java b/src/main/java/org/distorted/library/DistortedEffects.java
index 9124578..c63367b 100644
--- a/src/main/java/org/distorted/library/DistortedEffects.java
+++ b/src/main/java/org/distorted/library/DistortedEffects.java
@@ -300,7 +300,7 @@ public class DistortedEffects
         {
         throw new RuntimeException("DrawArrays: glError 0x" + Integer.toHexString(error));
         }
-
+/*
     int size = (MeshObject.POS_DATA_SIZE+MeshObject.NOR_DATA_SIZE+MeshObject.TEX_DATA_SIZE)*mesh.numVertices;
 
     Buffer mappedBuffer =  GLES30.glMapBufferRange(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0, 4*size, GLES30.GL_MAP_READ_BIT);
@@ -312,6 +312,7 @@ public class DistortedEffects
     android.util.Log.d( "Feedback", msg);
 
     GLES30.glUnmapBuffer(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER);
+*/
     GLES30.glEndTransformFeedback();
     GLES30.glBindBufferBase(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0, 0);
     }
@@ -343,8 +344,17 @@ public class DistortedEffects
 
     displayTransformFeedback(mesh);
 
+    EffectQueueMatrix.sendZero();
+    EffectQueueVertex.sendZero();
+
     mF.send(halfW,halfH);
 
+    GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, mesh.mAttTFO[0]);
+    GLES30.glVertexAttribPointer(mMainProgram.mAttribute[0], MeshObject.POS_DATA_SIZE, GLES30.GL_FLOAT, false, MeshObject.VERTSIZE, MeshObject.OFFSET0);
+    GLES30.glVertexAttribPointer(mMainProgram.mAttribute[1], MeshObject.NOR_DATA_SIZE, GLES30.GL_FLOAT, false, MeshObject.VERTSIZE, MeshObject.OFFSET1);
+    GLES30.glVertexAttribPointer(mMainProgram.mAttribute[2], MeshObject.TEX_DATA_SIZE, GLES30.GL_FLOAT, false, MeshObject.VERTSIZE, MeshObject.OFFSET2);
+    GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, 0 );
+
     GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, mesh.numVertices);
 
     /// DEBUG ONLY //////
diff --git a/src/main/java/org/distorted/library/EffectQueueMatrix.java b/src/main/java/org/distorted/library/EffectQueueMatrix.java
index 647ccd3..917c9cd 100644
--- a/src/main/java/org/distorted/library/EffectQueueMatrix.java
+++ b/src/main/java/org/distorted/library/EffectQueueMatrix.java
@@ -261,6 +261,17 @@ class EffectQueueMatrix extends EffectQueue
     GLES30.glUniformMatrix4fv(mMVPMatrixH, 1, false, mMVPMatrix , 0);
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  static synchronized void sendZero()
+    {
+    Matrix.setIdentityM(mTmpMatrix, 0);
+
+    GLES30.glUniform3f( mObjDH , 0.5f, 0.5f, 0.5f);
+    GLES30.glUniformMatrix4fv(mMVMatrixH , 1, false, mTmpMatrix , 0);
+    GLES30.glUniformMatrix4fv(mMVPMatrixH, 1, false, mMVPMatrix , 0);
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // move, scale
 
diff --git a/src/main/java/org/distorted/library/EffectQueueVertex.java b/src/main/java/org/distorted/library/EffectQueueVertex.java
index e25acfd..6e86832 100644
--- a/src/main/java/org/distorted/library/EffectQueueVertex.java
+++ b/src/main/java/org/distorted/library/EffectQueueVertex.java
@@ -151,6 +151,13 @@ class EffectQueueVertex extends EffectQueue
       }
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  static synchronized void sendZero()
+    {
+    GLES30.glUniform1i( mNumEffectsH, 0);
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // Do various post-processing on already computed effects.
 // 1) here unlike in the fragment queue, we don't have to multiply the points by ModelView matrix because that gets done in the shader.
