commit 41a85bb7d15929ddc025f810c8ed0348feca2eb3
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Jul 3 14:19:44 2018 +0100

    Convert everythig to GLES31 (there were some GLES30 remnants)

diff --git a/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRendererPicker.java b/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRendererPicker.java
index b85465d..8188962 100644
--- a/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRendererPicker.java
+++ b/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRendererPicker.java
@@ -26,7 +26,7 @@ import java.nio.FloatBuffer;
 import javax.microedition.khronos.egl.EGLConfig;
 import javax.microedition.khronos.opengles.GL10;
 
-import android.opengl.GLES30;
+import android.opengl.GLES31;
 import android.opengl.GLSurfaceView;
 import android.opengl.Matrix;
 
@@ -105,7 +105,7 @@ class AroundTheWorldRendererPicker implements GLSurfaceView.Renderer
 
 	@Override public void onSurfaceCreated(GL10 glUnused, EGLConfig config)
 	  {
-		GLES30.glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
+		GLES31.glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
 
 		final float eyeX = 0.0f;
 		final float eyeY = 0.0f;
@@ -142,19 +142,19 @@ class AroundTheWorldRendererPicker implements GLSurfaceView.Renderer
 		  + "  gl_FragColor = v_Color;    \n"
 		  + "  }                          \n";
 
-		int vertexShaderHandle = GLES30.glCreateShader(GLES30.GL_VERTEX_SHADER);
+		int vertexShaderHandle = GLES31.glCreateShader(GLES31.GL_VERTEX_SHADER);
 
 		if (vertexShaderHandle != 0)
 		  {
-			GLES30.glShaderSource(vertexShaderHandle, vertexShader);
-      GLES30.glCompileShader(vertexShaderHandle);
+			GLES31.glShaderSource(vertexShaderHandle, vertexShader);
+      GLES31.glCompileShader(vertexShaderHandle);
 
       final int[] compileStatus = new int[1];
-			GLES30.glGetShaderiv(vertexShaderHandle, GLES30.GL_COMPILE_STATUS, compileStatus, 0);
+			GLES31.glGetShaderiv(vertexShaderHandle, GLES31.GL_COMPILE_STATUS, compileStatus, 0);
 
 			if (compileStatus[0] == 0)
   			{
-				GLES30.glDeleteShader(vertexShaderHandle);
+				GLES31.glDeleteShader(vertexShaderHandle);
 				vertexShaderHandle = 0;
 	  		}
 		  }
@@ -164,19 +164,19 @@ class AroundTheWorldRendererPicker implements GLSurfaceView.Renderer
 			throw new RuntimeException("Error creating vertex shader.");
 		  }
 
-		int fragmentShaderHandle = GLES30.glCreateShader(GLES30.GL_FRAGMENT_SHADER);
+		int fragmentShaderHandle = GLES31.glCreateShader(GLES31.GL_FRAGMENT_SHADER);
 
 		if (fragmentShaderHandle != 0)
 		  {
-			GLES30.glShaderSource(fragmentShaderHandle, fragmentShader);
-      GLES30.glCompileShader(fragmentShaderHandle);
+			GLES31.glShaderSource(fragmentShaderHandle, fragmentShader);
+      GLES31.glCompileShader(fragmentShaderHandle);
 
 			final int[] compileStatus = new int[1];
-			GLES30.glGetShaderiv(fragmentShaderHandle, GLES30.GL_COMPILE_STATUS, compileStatus, 0);
+			GLES31.glGetShaderiv(fragmentShaderHandle, GLES31.GL_COMPILE_STATUS, compileStatus, 0);
 
 			if (compileStatus[0] == 0)
 			  {
-				GLES30.glDeleteShader(fragmentShaderHandle);
+				GLES31.glDeleteShader(fragmentShaderHandle);
 				fragmentShaderHandle = 0;
 			  }
 		  }
@@ -186,22 +186,22 @@ class AroundTheWorldRendererPicker implements GLSurfaceView.Renderer
 			throw new RuntimeException("Error creating fragment shader.");
 		  }
 
-		int programHandle = GLES30.glCreateProgram();
+		int programHandle = GLES31.glCreateProgram();
 
 		if (programHandle != 0)
 		  {
-			GLES30.glAttachShader(programHandle, vertexShaderHandle);
-      GLES30.glAttachShader(programHandle, fragmentShaderHandle);
-			GLES30.glBindAttribLocation(programHandle, 0, "a_Position");
-			GLES30.glBindAttribLocation(programHandle, 1, "a_Color");
-			GLES30.glLinkProgram(programHandle);
+			GLES31.glAttachShader(programHandle, vertexShaderHandle);
+      GLES31.glAttachShader(programHandle, fragmentShaderHandle);
+			GLES31.glBindAttribLocation(programHandle, 0, "a_Position");
+			GLES31.glBindAttribLocation(programHandle, 1, "a_Color");
+			GLES31.glLinkProgram(programHandle);
 
 			final int[] linkStatus = new int[1];
-			GLES30.glGetProgramiv(programHandle, GLES30.GL_LINK_STATUS, linkStatus, 0);
+			GLES31.glGetProgramiv(programHandle, GLES31.GL_LINK_STATUS, linkStatus, 0);
 
 			if (linkStatus[0] == 0)
 			  {
-				GLES30.glDeleteProgram(programHandle);
+				GLES31.glDeleteProgram(programHandle);
 				programHandle = 0;
 			  }
 		  }
@@ -211,11 +211,11 @@ class AroundTheWorldRendererPicker implements GLSurfaceView.Renderer
 			throw new RuntimeException("Error creating program.");
 		  }
 
-    mMVPMatrixH = GLES30.glGetUniformLocation(programHandle, "u_MVPMatrix");
-    mPositionH  = GLES30.glGetAttribLocation(programHandle, "a_Position");
-    mColorH     = GLES30.glGetAttribLocation(programHandle, "a_Color");
+    mMVPMatrixH = GLES31.glGetUniformLocation(programHandle, "u_MVPMatrix");
+    mPositionH  = GLES31.glGetAttribLocation(programHandle, "a_Position");
+    mColorH     = GLES31.glGetAttribLocation(programHandle, "a_Color");
 
-    GLES30.glUseProgram(programHandle);
+    GLES31.glUseProgram(programHandle);
 	  }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -225,7 +225,7 @@ class AroundTheWorldRendererPicker implements GLSurfaceView.Renderer
 	  mHeight = height;
 	  mWidth  = width;
 
-		GLES30.glViewport(0, 0, width, height);
+		GLES31.glViewport(0, 0, width, height);
 
 		final float ratio  = (float) width / height;
 		final float left   =-ratio;
@@ -243,32 +243,32 @@ class AroundTheWorldRendererPicker implements GLSurfaceView.Renderer
 
 	@Override public void onDrawFrame(GL10 glUnused)
 	  {
-		GLES30.glClear(GLES30.GL_DEPTH_BUFFER_BIT | GLES30.GL_COLOR_BUFFER_BIT);
-    GLES30.glUniformMatrix4fv(mMVPMatrixH, 1, false, mMVPTriangleMatrix, 0);
+		GLES31.glClear(GLES31.GL_DEPTH_BUFFER_BIT | GLES31.GL_COLOR_BUFFER_BIT);
+    GLES31.glUniformMatrix4fv(mMVPMatrixH, 1, false, mMVPTriangleMatrix, 0);
 
     ///////// 'white-black-yellow' triangle //////
     mTriangleVert.position(POSITION_OFFSET);
-    GLES30.glVertexAttribPointer(mPositionH, POSITION_DATA_SIZE, GLES30.GL_FLOAT, false, STRIDE_BYTES, mTriangleVert);
-    GLES30.glEnableVertexAttribArray(mPositionH);
+    GLES31.glVertexAttribPointer(mPositionH, POSITION_DATA_SIZE, GLES31.GL_FLOAT, false, STRIDE_BYTES, mTriangleVert);
+    GLES31.glEnableVertexAttribArray(mPositionH);
     mTriangleVert.position(COLOR_OFFSET);
-    GLES30.glVertexAttribPointer(mColorH, COLOR_DATA_SIZE, GLES30.GL_FLOAT, false, STRIDE_BYTES, mTriangleVert);
-    GLES30.glEnableVertexAttribArray(mColorH);
+    GLES31.glVertexAttribPointer(mColorH, COLOR_DATA_SIZE, GLES31.GL_FLOAT, false, STRIDE_BYTES, mTriangleVert);
+    GLES31.glEnableVertexAttribArray(mColorH);
 
-		GLES30.glUniformMatrix4fv(mMVPMatrixH, 1, false, mMVPTriangleMatrix, 0);
-		GLES30.glDrawArrays(GLES30.GL_TRIANGLES, 0, 3);
+		GLES31.glUniformMatrix4fv(mMVPMatrixH, 1, false, mMVPTriangleMatrix, 0);
+		GLES31.glDrawArrays(GLES31.GL_TRIANGLES, 0, 3);
 
     //////// 'current position' square ///////////
     mSquareVert.position(POSITION_OFFSET);
-    GLES30.glVertexAttribPointer(mPositionH, POSITION_DATA_SIZE, GLES30.GL_FLOAT, false, STRIDE_BYTES, mSquareVert);
-    GLES30.glEnableVertexAttribArray(mPositionH);
+    GLES31.glVertexAttribPointer(mPositionH, POSITION_DATA_SIZE, GLES31.GL_FLOAT, false, STRIDE_BYTES, mSquareVert);
+    GLES31.glEnableVertexAttribArray(mPositionH);
     mSquareVert.position(COLOR_OFFSET);
-    GLES30.glVertexAttribPointer(mColorH, COLOR_DATA_SIZE, GLES30.GL_FLOAT, false, STRIDE_BYTES, mSquareVert);
-    GLES30.glEnableVertexAttribArray(mColorH);
+    GLES31.glVertexAttribPointer(mColorH, COLOR_DATA_SIZE, GLES31.GL_FLOAT, false, STRIDE_BYTES, mSquareVert);
+    GLES31.glEnableVertexAttribArray(mColorH);
 
     Matrix.multiplyMM(mMVPSquareMatrix, 0, mViewMatrix, 0, mModelMatrix, 0);
     Matrix.multiplyMM(mMVPSquareMatrix, 0, mProjectionMatrix, 0, mMVPSquareMatrix, 0);
 
-    GLES30.glUniformMatrix4fv(mMVPMatrixH, 1, false, mMVPSquareMatrix, 0);
-		GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0,4);
+    GLES31.glUniformMatrix4fv(mMVPMatrixH, 1, false, mMVPSquareMatrix, 0);
+		GLES31.glDrawArrays(GLES31.GL_TRIANGLE_STRIP, 0,4);
 	  }
   }
diff --git a/src/main/java/org/distorted/examples/bitmaptree/BitmapTreeRenderer.java b/src/main/java/org/distorted/examples/bitmaptree/BitmapTreeRenderer.java
index a317d0a..ec7bc1f 100644
--- a/src/main/java/org/distorted/examples/bitmaptree/BitmapTreeRenderer.java
+++ b/src/main/java/org/distorted/examples/bitmaptree/BitmapTreeRenderer.java
@@ -47,7 +47,7 @@ import org.distorted.library.type.Static3D;
 
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
-import android.opengl.GLES30;
+import android.opengl.GLES31;
 import android.opengl.GLSurfaceView;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -89,8 +89,8 @@ class BitmapTreeRenderer implements GLSurfaceView.Renderer
 
    private void setDepthPriv()
      {
-     if( mDepth ) mRoot.glEnable (GLES30.GL_DEPTH_TEST);
-     else         mRoot.glDisable(GLES30.GL_DEPTH_TEST);
+     if( mDepth ) mRoot.glEnable (GLES31.GL_DEPTH_TEST);
+     else         mRoot.glDisable(GLES31.GL_DEPTH_TEST);
 
      mRoot.glDepthMask(mDepth);
 
@@ -145,9 +145,9 @@ class BitmapTreeRenderer implements GLSurfaceView.Renderer
       // TODO
       // This appears to be needed in case we create the app anew with NO DEPTH
       // (i.e. we set 'no depth' and then rotate screen). Investigate.
-      GLES30.glEnable(GLES30.GL_CULL_FACE);
-      GLES30.glCullFace(GLES30.GL_BACK);
-      GLES30.glFrontFace(GLES30.GL_CW);
+      GLES31.glEnable(GLES31.GL_CULL_FACE);
+      GLES31.glCullFace(GLES31.GL_BACK);
+      GLES31.glFrontFace(GLES31.GL_CW);
 
       InputStream is1 = mView.getContext().getResources().openRawResource(R.raw.monalisa);
       InputStream is2 = mView.getContext().getResources().openRawResource(R.raw.grid);
diff --git a/src/main/java/org/distorted/examples/check/CheckRenderer.java b/src/main/java/org/distorted/examples/check/CheckRenderer.java
index 85179e7..8237c12 100644
--- a/src/main/java/org/distorted/examples/check/CheckRenderer.java
+++ b/src/main/java/org/distorted/examples/check/CheckRenderer.java
@@ -49,7 +49,7 @@ import android.content.Context;
 import android.content.DialogInterface;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
-import android.opengl.GLES30;
+import android.opengl.GLES31;
 import android.opengl.GLSurfaceView;
 import android.util.Log;
 
@@ -214,13 +214,13 @@ class CheckRenderer implements GLSurfaceView.Renderer
       
         String ver;
       
-        ver = GLES30.glGetString(GLES30.GL_SHADING_LANGUAGE_VERSION);   
+        ver = GLES31.glGetString(GLES31.GL_SHADING_LANGUAGE_VERSION);
         compilationResult += "\n\nGLSL version: "+(ver==null ? "null" : ver);
-        ver = GLES30.glGetString(GLES30.GL_VERSION);  
+        ver = GLES31.glGetString(GLES31.GL_VERSION);
         compilationResult += "\nGL version: "+(ver==null ? "null" : ver);
-        ver = GLES30.glGetString(GLES30.GL_VENDOR);   
+        ver = GLES31.glGetString(GLES31.GL_VENDOR);
         compilationResult += "\nGL vendor: "+(ver==null ? "null" : ver);
-        ver = GLES30.glGetString(GLES30.GL_RENDERER);    
+        ver = GLES31.glGetString(GLES31.GL_RENDERER);
         compilationResult += "\nGL renderer: "+(ver==null ? "null" : ver);
       
         CheckActivity act = (CheckActivity)mView.getContext();
diff --git a/src/main/java/org/distorted/examples/plainmonalisa/RenderThread.java b/src/main/java/org/distorted/examples/plainmonalisa/RenderThread.java
index 699d6e8..9951975 100644
--- a/src/main/java/org/distorted/examples/plainmonalisa/RenderThread.java
+++ b/src/main/java/org/distorted/examples/plainmonalisa/RenderThread.java
@@ -23,14 +23,13 @@ import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.opengl.EGL14;
 import android.opengl.EGLSurface;
-import android.opengl.GLES30;
+import android.opengl.GLES31;
 import android.os.Looper;
 import android.util.Log;
 import android.view.Surface;
 import android.view.SurfaceHolder;
 import android.view.SurfaceView;
 
-import org.distorted.library.effect.EffectName;
 import org.distorted.library.effect.MatrixEffectMove;
 import org.distorted.library.effect.MatrixEffectScale;
 import org.distorted.library.effect.VertexEffectDistort;
@@ -119,9 +118,9 @@ class RenderThread extends Thread
 
   private static void checkGlError(String op)
     {
-    int error = GLES30.glGetError();
+    int error = GLES31.glGetError();
 
-    if (error != GLES30.GL_NO_ERROR)
+    if (error != GLES31.GL_NO_ERROR)
       {
       String msg = op + ": glError 0x" + Integer.toHexString(error);
       Log.e(TAG, msg);
diff --git a/src/main/java/org/distorted/examples/save/SaveRenderer.java b/src/main/java/org/distorted/examples/save/SaveRenderer.java
index 880d9c6..4c9ee63 100644
--- a/src/main/java/org/distorted/examples/save/SaveRenderer.java
+++ b/src/main/java/org/distorted/examples/save/SaveRenderer.java
@@ -30,7 +30,6 @@ import javax.microedition.khronos.opengles.GL10;
 
 import org.distorted.examples.R;
 
-import org.distorted.library.effect.EffectName;
 import org.distorted.library.effect.MatrixEffectMove;
 import org.distorted.library.effect.MatrixEffectScale;
 import org.distorted.library.effect.VertexEffectSink;
@@ -47,7 +46,7 @@ import org.distorted.library.type.Static4D;
 
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
-import android.opengl.GLES30;
+import android.opengl.GLES31;
 import android.opengl.GLSurfaceView;
 import android.os.Environment;
 
@@ -170,8 +169,8 @@ class SaveRenderer implements GLSurfaceView.Renderer
 
       if( textureID>=0 )
         {
-        GLES30.glBindTexture(GLES30.GL_TEXTURE_2D, textureID);
-        GLES30.glReadPixels( 0, 0, fW, fH, GLES30.GL_RGBA, GLES30.GL_UNSIGNED_BYTE, buf);
+        GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, textureID);
+        GLES31.glReadPixels( 0, 0, fW, fH, GLES31.GL_RGBA, GLES31.GL_UNSIGNED_BYTE, buf);
         SaveWorkerThread.newBuffer(buf,fW,fH,mPath);
         }
       else
diff --git a/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java b/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java
index 47cb5b0..dc7a31a 100644
--- a/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java
+++ b/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java
@@ -28,7 +28,6 @@ import javax.microedition.khronos.opengles.GL10;
 
 import org.distorted.examples.R;
 
-import org.distorted.library.effect.EffectName;
 import org.distorted.library.effect.FragmentEffectAlpha;
 import org.distorted.library.effect.MatrixEffectMove;
 import org.distorted.library.effect.MatrixEffectRotate;
@@ -52,7 +51,7 @@ import android.graphics.BitmapFactory;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.Typeface;
-import android.opengl.GLES30;
+import android.opengl.GLES31;
 import android.opengl.GLSurfaceView;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -432,7 +431,7 @@ class StarWarsRenderer implements GLSurfaceView.Renderer, EffectListener
         
         mBackground = mScreen.attach(mCrawlBackgroundTexture, mCrawlBackgroundEffects,mQuad);
         mBackground.attach(mCrawlTexture, mCrawlEffects,mQuad);
-        mBackground.glDisable(GLES30.GL_DEPTH_TEST);
+        mBackground.glDisable(GLES31.GL_DEPTH_TEST);
         mBackground.glDepthMask(false);
         mCrawlEffects.registerForMessages(this);
         }
diff --git a/src/main/java/org/distorted/examples/stencil/StencilRenderer.java b/src/main/java/org/distorted/examples/stencil/StencilRenderer.java
index 87e4351..83c1329 100644
--- a/src/main/java/org/distorted/examples/stencil/StencilRenderer.java
+++ b/src/main/java/org/distorted/examples/stencil/StencilRenderer.java
@@ -21,7 +21,7 @@ package org.distorted.examples.stencil;
 
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
-import android.opengl.GLES30;
+import android.opengl.GLES31;
 import android.opengl.GLSurfaceView;
 
 import org.distorted.examples.R;
@@ -118,19 +118,19 @@ class StencilRenderer implements GLSurfaceView.Renderer
       // Nothing - i.e. use default OpenGL settings (one difference - in Distorted, Depth Test is on by default).
       /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       // Stuff to do just before we render the Floor
-      mFloorNode.glEnable(GLES30.GL_STENCIL_TEST);                               // Enable Stencil when rendering this Node
-      mFloorNode.glStencilFunc(GLES30.GL_ALWAYS, 1, 0xFF);                       // Set any stencil to 1
-      mFloorNode.glStencilOp(GLES30.GL_KEEP, GLES30.GL_KEEP, GLES30.GL_REPLACE); // replace with 1 when we fail Depth test
+      mFloorNode.glEnable(GLES31.GL_STENCIL_TEST);                               // Enable Stencil when rendering this Node
+      mFloorNode.glStencilFunc(GLES31.GL_ALWAYS, 1, 0xFF);                       // Set any stencil to 1
+      mFloorNode.glStencilOp(GLES31.GL_KEEP, GLES31.GL_KEEP, GLES31.GL_REPLACE); // replace with 1 when we fail Depth test
       mFloorNode.glStencilMask(0xFF);                                            // Write to stencil buffer
       mFloorNode.glDepthMask(false);                                             // Don't write to depth buffer
-      mFloorNode.glClear(GLES30.GL_STENCIL_BUFFER_BIT);                          // Clear stencil buffer (by default, with a 0)
+      mFloorNode.glClear(GLES31.GL_STENCIL_BUFFER_BIT);                          // Clear stencil buffer (by default, with a 0)
 
       /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       // Stuff to do just before we render the lower Cube
-      mCube2Node.glEnable(GLES30.GL_STENCIL_TEST);                               // Enable Stencil when rendering this Node
+      mCube2Node.glEnable(GLES31.GL_STENCIL_TEST);                               // Enable Stencil when rendering this Node
                                                                                  // no, this is not retained; we have to set
                                                                                  // this again even though Floor just set it
-      mCube2Node.glStencilFunc(GLES30.GL_EQUAL, 1, 0xFF);                        // Pass test if stencil value is 1
+      mCube2Node.glStencilFunc(GLES31.GL_EQUAL, 1, 0xFF);                        // Pass test if stencil value is 1
       mCube2Node.glStencilMask(0x00);                                            // Don't write anything to stencil buffer
       mCube2Node.glDepthMask(true);                                              // Write to depth buffer
       /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
