commit 5c60456125778dab906cdea8383dc986c2c695e1
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Fri May 5 16:48:18 2017 +0100

    Beginnings of support for DistortedEffects.drawPrivFeedback()

diff --git a/src/main/java/org/distorted/examples/feedback/FeedbackRenderer.java b/src/main/java/org/distorted/examples/feedback/FeedbackRenderer.java
index 0d034c5..4094683 100644
--- a/src/main/java/org/distorted/examples/feedback/FeedbackRenderer.java
+++ b/src/main/java/org/distorted/examples/feedback/FeedbackRenderer.java
@@ -42,7 +42,7 @@ class FeedbackRenderer implements GLSurfaceView.Renderer
     private final int BYTESFLOAT = 4;
     private final int POSITION   = 3;
 
-    private final boolean USEPOINTS=true;
+    private final boolean USEPOINTS=false;
 
     private GLSurfaceView mView;
     private DistortedProgram mFeedbackProgram;
@@ -68,7 +68,7 @@ class FeedbackRenderer implements GLSurfaceView.Renderer
 
       GLES30.glEnable(GLES30.GL_RASTERIZER_DISCARD);
       GLES30.glBeginTransformFeedback( USEPOINTS ? GLES30.GL_POINTS : GLES30.GL_TRIANGLES);
-      GLES30.glDrawArrays( USEPOINTS ? GLES30.GL_POINTS : GLES30.GL_TRIANGLE_STRIP, 0, mVertices);
+      GLES30.glDrawArrays( USEPOINTS ? GLES30.GL_POINTS : GLES30.GL_TRIANGLES, 0, mVertices);
 
       int error = GLES30.glGetError();
 
@@ -81,13 +81,11 @@ class FeedbackRenderer implements GLSurfaceView.Renderer
       GLES30.glDisable(GLES30.GL_RASTERIZER_DISCARD);
       GLES30.glFlush();
 
-      int numVertices = 3*(mVertices);
-
-      Buffer mappedBuffer =  GLES30.glMapBufferRange(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0, numVertices*POSITION*BYTESFLOAT, GLES30.GL_MAP_READ_BIT);
+      Buffer mappedBuffer =  GLES30.glMapBufferRange(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0, mVertices*POSITION*BYTESFLOAT, GLES30.GL_MAP_READ_BIT);
       FloatBuffer fb = ((ByteBuffer) mappedBuffer).order(ByteOrder.nativeOrder()).asFloatBuffer();
       String msg = "";
 
-      for(int i=0; i<numVertices*POSITION; i++) msg += (" "+fb.get(i));
+      for(int i=0; i<mVertices*POSITION; i++) msg += (" "+fb.get(i));
 
       android.util.Log.d( "Feedback", msg);
 
@@ -132,7 +130,14 @@ class FeedbackRenderer implements GLSurfaceView.Renderer
         android.util.Log.e("Feedback", "exception creating feedback program: "+ex.getMessage());
         }
 
-      float[] floatData = { 1.0f,4.0f,9.0f, 16.0f,25.0f,36.0f, 49.0f,64.0f,81.0f,  100.0f,121.0f,144.0f};
+      float[] floatData = {   1.0f,  4.0f,  9.0f,
+                             16.0f, 25.0f, 36.0f,
+                             49.0f, 64.0f, 81.0f,
+                            100.0f,121.0f,144.0f,
+                              1.0f,  4.0f,  9.0f,
+                             16.0f, 25.0f, 36.0f
+                          };
+
       mVertices = floatData.length/POSITION;
       FloatBuffer data = ByteBuffer.allocateDirect(mVertices*POSITION*BYTESFLOAT).order(ByteOrder.nativeOrder()).asFloatBuffer();
       data.put(floatData).position(0);
@@ -146,7 +151,7 @@ class FeedbackRenderer implements GLSurfaceView.Renderer
       mTBO = new int[1];
       GLES30.glGenBuffers(1, mTBO, 0);
       GLES30.glBindBuffer(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, mTBO[0]);
-      GLES30.glBufferData(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 3*(mVertices)*POSITION*BYTESFLOAT, null, GLES30.GL_STATIC_READ);
+      GLES30.glBufferData(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, mVertices*POSITION*BYTESFLOAT, null, GLES30.GL_STATIC_READ);
       GLES30.glBindBuffer(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0);
       }
 }
diff --git a/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java b/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
index aeb0a55..14e1171 100644
--- a/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
+++ b/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
@@ -137,7 +137,7 @@ class MonaLisaRenderer implements GLSurfaceView.Renderer
       if( mTexture==null ) mTexture = new DistortedTexture(bmpWidth,bmpHeight);
 
       // likewise the Mesh
-      if( mMesh==null ) mMesh = new MeshFlat(2,2);//(9,9*bmpHeight/bmpWidth);
+      if( mMesh==null ) mMesh = new MeshFlat(9,9*bmpHeight/bmpWidth);
 
       // even if mTexture wasn't null, we still need to call setTexture() on it
       // because every time activity goes to background, its OpenGL resources
