commit 420836fc4aab3c557bcbf0214d33d0ca50812639
Author: leszek <leszek@koltunski.pl>
Date:   Thu May 11 21:40:56 2017 +0100

    Some corrections so that most apps still work on the Android emulator (OpenGL ES 2.0-based)

diff --git a/src/main/java/org/distorted/library/DistortedEffects.java b/src/main/java/org/distorted/library/DistortedEffects.java
index d69d81a..7b7bc50 100644
--- a/src/main/java/org/distorted/library/DistortedEffects.java
+++ b/src/main/java/org/distorted/library/DistortedEffects.java
@@ -259,11 +259,23 @@ public class DistortedEffects
     surface.setAsOutput(currTime);
     GLES30.glUniform1i(mMainTextureH, 0);
 
-    GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, mesh.mAttVBO[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 );
+    if( Distorted.GLSL >= 300 )
+      {
+      GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, mesh.mAttVBO[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);
+      }
+    else
+      {
+      mesh.mVertAttribs.position(0);
+      GLES30.glVertexAttribPointer(mMainProgram.mAttribute[0], MeshObject.POS_DATA_SIZE, GLES30.GL_FLOAT, false, MeshObject.VERTSIZE, mesh.mVertAttribs);
+      mesh.mVertAttribs.position(MeshObject.POS_DATA_SIZE);
+      GLES30.glVertexAttribPointer(mMainProgram.mAttribute[1], MeshObject.NOR_DATA_SIZE, GLES30.GL_FLOAT, false, MeshObject.VERTSIZE, mesh.mVertAttribs);
+      mesh.mVertAttribs.position(MeshObject.POS_DATA_SIZE+MeshObject.NOR_DATA_SIZE);
+      GLES30.glVertexAttribPointer(mMainProgram.mAttribute[2], MeshObject.TEX_DATA_SIZE, GLES30.GL_FLOAT, false, MeshObject.VERTSIZE, mesh.mVertAttribs);
+      }
 
     mM.send(surface,halfW,halfH,halfZ);
     mV.send(halfW,halfH,halfZ);
diff --git a/src/main/java/org/distorted/library/MeshObject.java b/src/main/java/org/distorted/library/MeshObject.java
index 3f5d491..5a5e2da 100644
--- a/src/main/java/org/distorted/library/MeshObject.java
+++ b/src/main/java/org/distorted/library/MeshObject.java
@@ -82,7 +82,7 @@ public abstract class MeshObject extends DistortedObject
        GLES30.glBufferData(GLES30.GL_ARRAY_BUFFER, numVertices*VERTSIZE, mVertAttribs, GLES30.GL_STATIC_READ);
        GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, 0);
        }
-     if( mAttTFO[0]<0 )
+     if( mAttTFO[0]<0 && Distorted.GLSL >= 300 )
        {
        GLES30.glGenBuffers(1, mAttTFO, 0);
        GLES30.glBindBuffer(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, mAttTFO[0]);
@@ -138,12 +138,14 @@ public abstract class MeshObject extends DistortedObject
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 /**
  * When rendering this Mesh, do we want to render the Normal vectors as well?
+ * <p>
+ * Will work only on OpenGL ES >= 3.0 devices.
  *
  * @param show Controls if we render the Normal vectors or not.
  */
    public void setShowNormals(boolean show)
      {
-     mShowNormals = show;
+     mShowNormals = (Distorted.GLSL >= 300 && show);
      }
    }
 
diff --git a/src/main/java/org/distorted/library/program/DistortedProgram.java b/src/main/java/org/distorted/library/program/DistortedProgram.java
index 76d16a9..dccc30f 100644
--- a/src/main/java/org/distorted/library/program/DistortedProgram.java
+++ b/src/main/java/org/distorted/library/program/DistortedProgram.java
@@ -270,7 +270,7 @@ public class DistortedProgram
     final int vertexShaderHandle   = compileShader(GLES30.GL_VERTEX_SHADER  , vertexHeader   + vertexShader  );
     final int fragmentShaderHandle = compileShader(GLES30.GL_FRAGMENT_SHADER, fragmentHeader + fragmentShader);
 
-    mProgramHandle = createAndLinkProgram(vertexShaderHandle, fragmentShaderHandle, mAttributeName, feedback);
+    mProgramHandle = createAndLinkProgram(vertexShaderHandle, fragmentShaderHandle, mAttributeName, glslVersion>= 300 ? feedback:null );
 
     mAttribute = new int[mNumAttributes];
 
