commit 35fd8f648bfc2122621e88bb4b2cad8fe9462548
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Thu May 11 14:55:05 2023 +0200

    Implement the android.opengl.Matrix functions ourselves.

diff --git a/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRendererPicker.java b/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRendererPicker.java
index 0ee5668..a04b642 100644
--- a/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRendererPicker.java
+++ b/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRendererPicker.java
@@ -30,6 +30,8 @@ import android.opengl.GLES31;
 import android.opengl.GLSurfaceView;
 import android.opengl.Matrix;
 
+import org.distorted.library.helpers.MatrixHelper;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 class AroundTheWorldRendererPicker implements GLSurfaceView.Renderer
@@ -41,11 +43,12 @@ class AroundTheWorldRendererPicker implements GLSurfaceView.Renderer
 	private static final int COLOR_OFFSET       = 3;
 	private static final int COLOR_DATA_SIZE    = 4;
 
-  private float[] mModelMatrix      = new float[16];
-	private float[] mViewMatrix       = new float[16];
-	private float[] mProjectionMatrix = new float[16];
-	private float[] mMVPTriangleMatrix= new float[16];
-  private float[] mMVPSquareMatrix  = new float[16];
+  private final float[] mModelMatrix      = new float[16];
+	private final float[] mViewMatrix       = new float[16];
+	private final float[] mProjectionMatrix = new float[16];
+	private final float[] mMVPTriangleMatrix= new float[16];
+  private final float[] mMVPSquareMatrix  = new float[16];
+  private final float[] mTmpMatrix        = new float[16];
 
 	private final FloatBuffer mTriangleVert, mSquareVert;
 
@@ -59,7 +62,7 @@ class AroundTheWorldRendererPicker implements GLSurfaceView.Renderer
 
 	AroundTheWorldRendererPicker()
 	  {
-	  Matrix.setIdentityM(mModelMatrix, 0);
+	  MatrixHelper.setIdentity(mModelMatrix);
 
 		final float[] triangleVertData = {
 				      -0.865f, 1.5f, 0.0f,    1.0f, 1.0f, 1.0f, 1.0f,   // x,y,z,  r,g,b,a
@@ -237,8 +240,8 @@ class AroundTheWorldRendererPicker implements GLSurfaceView.Renderer
 		final float near   = 1.0f;
 		final float far    = 2.0f;
 
-		Matrix.frustumM(mProjectionMatrix, 0, left, right, bottom, top, near, far);
-		Matrix.multiplyMM(mMVPTriangleMatrix, 0, mProjectionMatrix, 0, mViewMatrix, 0);
+		MatrixHelper.frustum(mProjectionMatrix, left, right, bottom, top, near, far);
+		MatrixHelper.multiply(mMVPTriangleMatrix, mProjectionMatrix, mViewMatrix);
 	  }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -268,8 +271,8 @@ class AroundTheWorldRendererPicker implements GLSurfaceView.Renderer
     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);
+    MatrixHelper.multiply(mTmpMatrix, mViewMatrix, mModelMatrix);
+    MatrixHelper.multiply(mMVPSquareMatrix,  mProjectionMatrix, mTmpMatrix );
 
     GLES31.glUniformMatrix4fv(mMVPMatrixH, 1, false, mMVPSquareMatrix, 0);
 		GLES31.glDrawArrays(GLES31.GL_TRIANGLE_STRIP, 0,4);
