commit 96fba026435087e429fec7331d4ac38b9478684e
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Thu May 4 16:23:42 2017 +0100

    Bugfix (the thing was drawing too many GL_POINTS, this worked on Nexus 5X but not on Nexus 4)

diff --git a/src/main/java/org/distorted/examples/feedback/FeedbackRenderer.java b/src/main/java/org/distorted/examples/feedback/FeedbackRenderer.java
index aea3822..0e2f7e3 100644
--- a/src/main/java/org/distorted/examples/feedback/FeedbackRenderer.java
+++ b/src/main/java/org/distorted/examples/feedback/FeedbackRenderer.java
@@ -40,6 +40,8 @@ import javax.microedition.khronos.opengles.GL10;
 
 class FeedbackRenderer implements GLSurfaceView.Renderer
 {
+    private final int BYTESFLOAT = 4;
+
     private GLSurfaceView mView;
     private DistortedProgram mFeedbackProgram;
     private int mBufferLength;
@@ -69,7 +71,7 @@ class FeedbackRenderer implements GLSurfaceView.Renderer
       GLES30.glDisable(GLES30.GL_RASTERIZER_DISCARD);
       GLES30.glFlush();
 
-      Buffer mappedBuffer =  GLES30.glMapBufferRange(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0, mBufferLength, GLES30.GL_MAP_READ_BIT);
+      Buffer mappedBuffer =  GLES30.glMapBufferRange(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0, mBufferLength*BYTESFLOAT, GLES30.GL_MAP_READ_BIT);
 
       if (mappedBuffer!=null)
         {
@@ -119,20 +121,20 @@ class FeedbackRenderer implements GLSurfaceView.Renderer
         }
 
       float[] floatData = { 1.0f, 4.0f, 9.0f, 16.0f, 25.0f, 100.0f };
-      mBufferLength = floatData.length * 4;
-      FloatBuffer data = ByteBuffer.allocateDirect(mBufferLength).order(ByteOrder.nativeOrder()).asFloatBuffer();
+      mBufferLength = floatData.length;
+      FloatBuffer data = ByteBuffer.allocateDirect(mBufferLength*BYTESFLOAT).order(ByteOrder.nativeOrder()).asFloatBuffer();
       data.put(floatData).position(0);
 
       mVBO = new int[1];
       GLES30.glGenBuffers(1, mVBO, 0);
       GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, mVBO[0]);
-      GLES30.glBufferData(GLES30.GL_ARRAY_BUFFER, mBufferLength, data, GLES30.GL_STATIC_READ);
+      GLES30.glBufferData(GLES30.GL_ARRAY_BUFFER, mBufferLength*BYTESFLOAT, data, GLES30.GL_STATIC_READ);
       GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, 0);
 
       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, mBufferLength, null, GLES30.GL_STATIC_READ);
+      GLES30.glBufferData(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, mBufferLength*BYTESFLOAT, null, GLES30.GL_STATIC_READ);
       GLES30.glBindBuffer(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0);
       }
 }
