commit e4330c89f9282147feaa76942cb88b0eefd5e989
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Fri Jun 16 15:33:17 2017 +0100

    Change of API: move setting the EGL context back to the APP.

diff --git a/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRenderer.java b/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRenderer.java
index d753ead..23ca2e8 100644
--- a/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRenderer.java
+++ b/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRenderer.java
@@ -71,7 +71,7 @@ class AroundTheWorldRenderer implements GLSurfaceView.Renderer
       mEffects.apply(new MatrixEffectScale(mScale));
 
       mManager.apply(mEffects);
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       mScreen.glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
       }
 
diff --git a/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldSurfaceView.java b/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldSurfaceView.java
index 763940a..9b81ec9 100644
--- a/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldSurfaceView.java
+++ b/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.aroundtheworld;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.util.AttributeSet;
 
@@ -38,6 +40,9 @@ class AroundTheWorldSurfaceView extends GLSurfaceView
       if(!isInEditMode())
         {
         mRenderer = new AroundTheWorldRenderer(this);
+        final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+        setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
         setRenderer(mRenderer);
         }
       }
diff --git a/src/main/java/org/distorted/examples/bean/BeanRenderer.java b/src/main/java/org/distorted/examples/bean/BeanRenderer.java
index af04b4c..7f7223d 100644
--- a/src/main/java/org/distorted/examples/bean/BeanRenderer.java
+++ b/src/main/java/org/distorted/examples/bean/BeanRenderer.java
@@ -95,7 +95,7 @@ class BeanRenderer implements GLSurfaceView.Renderer
       mEffects.apply( new MatrixEffectMove(mMove) );
       mEffects.apply( new MatrixEffectScale(mScale) );
 
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/bean/BeanSurfaceView.java b/src/main/java/org/distorted/examples/bean/BeanSurfaceView.java
index 32a6cfe..058b839 100644
--- a/src/main/java/org/distorted/examples/bean/BeanSurfaceView.java
+++ b/src/main/java/org/distorted/examples/bean/BeanSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.bean;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -31,6 +33,9 @@ class BeanSurfaceView extends GLSurfaceView
     public BeanSurfaceView(Context context) 
       {
       super(context);
+      final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+      final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+      setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
       setRenderer(new BeanRenderer(this));
       }
 }
diff --git a/src/main/java/org/distorted/examples/bitmaptree/BitmapTreeRenderer.java b/src/main/java/org/distorted/examples/bitmaptree/BitmapTreeRenderer.java
index 127bf42..13f562d 100644
--- a/src/main/java/org/distorted/examples/bitmaptree/BitmapTreeRenderer.java
+++ b/src/main/java/org/distorted/examples/bitmaptree/BitmapTreeRenderer.java
@@ -83,7 +83,7 @@ class BitmapTreeRenderer implements GLSurfaceView.Renderer
       mEffects.apply(new MatrixEffectScale(mScale));
       mEffects.apply(new FragmentEffectChroma(chromaDyn, new Static3D(0,0,1)));
 
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/bitmaptree/BitmapTreeSurfaceView.java b/src/main/java/org/distorted/examples/bitmaptree/BitmapTreeSurfaceView.java
index 19577f6..f9bee7d 100644
--- a/src/main/java/org/distorted/examples/bitmaptree/BitmapTreeSurfaceView.java
+++ b/src/main/java/org/distorted/examples/bitmaptree/BitmapTreeSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.bitmaptree;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.util.AttributeSet;
 
@@ -38,6 +40,9 @@ class BitmapTreeSurfaceView extends GLSurfaceView
       if(!isInEditMode())
         {
         mRenderer = new BitmapTreeRenderer(this);
+        final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+        setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
         setRenderer(mRenderer);
         }
       }
diff --git a/src/main/java/org/distorted/examples/blur/BlurRenderer.java b/src/main/java/org/distorted/examples/blur/BlurRenderer.java
index 4ff05ae..9e4fec7 100644
--- a/src/main/java/org/distorted/examples/blur/BlurRenderer.java
+++ b/src/main/java/org/distorted/examples/blur/BlurRenderer.java
@@ -63,7 +63,7 @@ class BlurRenderer implements GLSurfaceView.Renderer
       {
       mView   = v;
       mMesh   = new MeshFlat(1,1);
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
 
       mRadiusSta = new Static1D(5);
       Dynamic1D radiusDyn = new Dynamic1D();
diff --git a/src/main/java/org/distorted/examples/blur/BlurSurfaceView.java b/src/main/java/org/distorted/examples/blur/BlurSurfaceView.java
index b6033c9..543979a 100644
--- a/src/main/java/org/distorted/examples/blur/BlurSurfaceView.java
+++ b/src/main/java/org/distorted/examples/blur/BlurSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.blur;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.util.AttributeSet;
 
@@ -38,6 +40,9 @@ class BlurSurfaceView extends GLSurfaceView
       if(!isInEditMode())
         {
         mRenderer = new BlurRenderer(this);
+        final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+        setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
         setRenderer(mRenderer);
         }
       }
diff --git a/src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java b/src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java
index c93937f..3356e12 100644
--- a/src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java
+++ b/src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java
@@ -99,7 +99,7 @@ class CatAndDogRenderer implements GLSurfaceView.Renderer
       mEffects.apply( new MatrixEffectScale(diScale));
       mEffects.apply( new MatrixEffectRotate( diRotate, new Static3D(0,0,1), mRotate) );
 
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/catanddog/CatAndDogSurfaceView.java b/src/main/java/org/distorted/examples/catanddog/CatAndDogSurfaceView.java
index 27b2e9a..ac00235 100644
--- a/src/main/java/org/distorted/examples/catanddog/CatAndDogSurfaceView.java
+++ b/src/main/java/org/distorted/examples/catanddog/CatAndDogSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.catanddog;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -31,6 +33,9 @@ class CatAndDogSurfaceView extends GLSurfaceView
     public CatAndDogSurfaceView(Context context)
       {
       super(context);
+      final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+      final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+      setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
       setRenderer(new CatAndDogRenderer(this));
       }
 }
diff --git a/src/main/java/org/distorted/examples/check/CheckRenderer.java b/src/main/java/org/distorted/examples/check/CheckRenderer.java
index 2fdceea..5f6bf8b 100644
--- a/src/main/java/org/distorted/examples/check/CheckRenderer.java
+++ b/src/main/java/org/distorted/examples/check/CheckRenderer.java
@@ -131,7 +131,7 @@ class CheckRenderer implements GLSurfaceView.Renderer
         Log.e("Check", "Failed to add Chroma effect!");
         }
 
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/check/CheckSurfaceView.java b/src/main/java/org/distorted/examples/check/CheckSurfaceView.java
index 50373b1..82347c9 100644
--- a/src/main/java/org/distorted/examples/check/CheckSurfaceView.java
+++ b/src/main/java/org/distorted/examples/check/CheckSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.check;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.util.AttributeSet;
 
@@ -32,6 +34,9 @@ class CheckSurfaceView extends GLSurfaceView
     public CheckSurfaceView(Context context, AttributeSet attrs)
       {
       super(context, attrs);
+      final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+      final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+      setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
       if(!isInEditMode()) setRenderer(new CheckRenderer(this));
       }
 }
diff --git a/src/main/java/org/distorted/examples/cubes/CubesRenderer.java b/src/main/java/org/distorted/examples/cubes/CubesRenderer.java
index 751afd9..c1d6872 100644
--- a/src/main/java/org/distorted/examples/cubes/CubesRenderer.java
+++ b/src/main/java/org/distorted/examples/cubes/CubesRenderer.java
@@ -92,7 +92,7 @@ class CubesRenderer implements GLSurfaceView.Renderer
       mEffects.apply( new MatrixEffectQuaternion(quatInt1, mCenter) );
       mEffects.apply( new MatrixEffectQuaternion(quatInt2, mCenter) );
 
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/cubes/CubesSurfaceView.java b/src/main/java/org/distorted/examples/cubes/CubesSurfaceView.java
index c3996c5..604ba90 100644
--- a/src/main/java/org/distorted/examples/cubes/CubesSurfaceView.java
+++ b/src/main/java/org/distorted/examples/cubes/CubesSurfaceView.java
@@ -21,7 +21,9 @@ package org.distorted.examples.cubes;
 
 import org.distorted.examples.R;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
@@ -46,6 +48,9 @@ class CubesSurfaceView extends GLSurfaceView
       if(!isInEditMode())
         {
         mRenderer = new CubesRenderer(this);
+        final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+        setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
         setRenderer(mRenderer);
         Toast.makeText(context, R.string.example_rotate_toast , Toast.LENGTH_SHORT).show();
         }
diff --git a/src/main/java/org/distorted/examples/deform/DeformRenderer.java b/src/main/java/org/distorted/examples/deform/DeformRenderer.java
index ff527cf..1d44421 100644
--- a/src/main/java/org/distorted/examples/deform/DeformRenderer.java
+++ b/src/main/java/org/distorted/examples/deform/DeformRenderer.java
@@ -133,7 +133,7 @@ class DeformRenderer implements GLSurfaceView.Renderer
 
       movingShearDynamic.add(vShear[0]);
 
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       mScreen.setDebug(DistortedScreen.DEBUG_FPS);
 
       mMovingDistort   = new VertexEffectDistort(movingDistortDynamic, mTouchPoint, mRegion);
diff --git a/src/main/java/org/distorted/examples/deform/DeformSurfaceView.java b/src/main/java/org/distorted/examples/deform/DeformSurfaceView.java
index 703c320..259315f 100644
--- a/src/main/java/org/distorted/examples/deform/DeformSurfaceView.java
+++ b/src/main/java/org/distorted/examples/deform/DeformSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.deform;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
@@ -40,6 +42,9 @@ class DeformSurfaceView extends GLSurfaceView
       if(!isInEditMode())
         {
         mRenderer = new DeformRenderer(this);
+        final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+        setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
         setRenderer(mRenderer);
         }
       }
diff --git a/src/main/java/org/distorted/examples/differentbitmaps/DifferentBitmapsRenderer.java b/src/main/java/org/distorted/examples/differentbitmaps/DifferentBitmapsRenderer.java
index d2c6287..563e923 100644
--- a/src/main/java/org/distorted/examples/differentbitmaps/DifferentBitmapsRenderer.java
+++ b/src/main/java/org/distorted/examples/differentbitmaps/DifferentBitmapsRenderer.java
@@ -98,7 +98,7 @@ class DifferentBitmapsRenderer implements GLSurfaceView.Renderer
         mEffects[i].apply(scaleEffect);
         }
 
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       mScreen.glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
       }
 
@@ -127,81 +127,81 @@ class DifferentBitmapsRenderer implements GLSurfaceView.Renderer
    
 ///////////////////////////////////////////////////////////////////////////////////////////////////
    
-    public void onDrawFrame(GL10 glUnused) 
+   public void onDrawFrame(GL10 glUnused)
       {
       mScreen.render( System.currentTimeMillis() );
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
     
-    public void onSurfaceChanged(GL10 glUnused, int width, int height) 
-      {
-      if( (float)bmpHeight/(NUM*bmpWidth) > (float)height/width )
-        {
-        int w = (height*bmpWidth)/bmpHeight;
-        float factor = (float)height/bmpHeight;
-        mScale.set(factor,factor,factor);
-
-        for(int i=NUM-1; i>=0; i--) 
-          {
-          mMove[i].set((width-NUM*w)/2 +i*w ,0,0);
-          }
-        }
-      else
-        {
-        int w = width/NUM;  
-        int h = (width*bmpHeight)/(bmpWidth*NUM);
-        float factor = (float)width/(bmpWidth*NUM);
-        mScale.set(factor,factor,factor);
-
-        for(int i=NUM-1; i>=0; i--) 
-          {
-          mMove[i].set(i*w,(height-h)/2,0);
-          }
-        }
+   public void onSurfaceChanged(GL10 glUnused, int width, int height)
+     {
+     if( (float)bmpHeight/(NUM*bmpWidth) > (float)height/width )
+       {
+       int w = (height*bmpWidth)/bmpHeight;
+       float factor = (float)height/bmpHeight;
+       mScale.set(factor,factor,factor);
+
+       for(int i=NUM-1; i>=0; i--)
+         {
+         mMove[i].set((width-NUM*w)/2 +i*w ,0,0);
+         }
+       }
+     else
+       {
+       int w = width/NUM;
+       int h = (width*bmpHeight)/(bmpWidth*NUM);
+       float factor = (float)width/(bmpWidth*NUM);
+       mScale.set(factor,factor,factor);
+
+       for(int i=NUM-1; i>=0; i--)
+         {
+         mMove[i].set(i*w,(height-h)/2,0);
+         }
+       }
 
 
-      mScreen.resize(width, height);
-      }
+     mScreen.resize(width, height);
+     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
     
-    public void onSurfaceCreated(GL10 glUnused, EGLConfig config) 
-      {
-      Bitmap bitmap0= readBitmap(R.raw.dog);
-      Bitmap bitmap1= readBitmap(R.raw.face);
-      Bitmap bitmap2= readBitmap(R.raw.cat);
+   public void onSurfaceCreated(GL10 glUnused, EGLConfig config)
+     {
+     Bitmap bitmap0= readBitmap(R.raw.dog);
+     Bitmap bitmap1= readBitmap(R.raw.face);
+     Bitmap bitmap2= readBitmap(R.raw.cat);
       
-      bmpHeight = bitmap0.getHeight();
-      bmpWidth  = bitmap0.getWidth();
+     bmpHeight = bitmap0.getHeight();
+     bmpWidth  = bitmap0.getWidth();
 
-      if( mTexture==null )
-        {
-        mTexture = new DistortedTexture[NUM];
+     if( mTexture==null )
+       {
+       mTexture = new DistortedTexture[NUM];
 
-        for(int i=0; i<NUM; i++)
-          mTexture[i] = new DistortedTexture(bmpWidth,bmpHeight);
-        }
+       for(int i=0; i<NUM; i++)
+         mTexture[i] = new DistortedTexture(bmpWidth,bmpHeight);
+       }
 
-      mTexture[0].setTexture(bitmap0);
-      mTexture[1].setTexture(bitmap1);
-      mTexture[2].setTexture(bitmap2);
+     mTexture[0].setTexture(bitmap0);
+     mTexture[1].setTexture(bitmap1);
+     mTexture[2].setTexture(bitmap2);
 
-      if( mMesh==null ) mMesh = new MeshFlat(30,30*bmpHeight/bmpWidth);
+     if( mMesh==null ) mMesh = new MeshFlat(30,30*bmpHeight/bmpWidth);
 
-      mScreen.detachAll();
-      for(int i=NUM-1; i>=0; i--) mScreen.attach(mTexture[i], mEffects[i], mMesh);
+     mScreen.detachAll();
+     for(int i=NUM-1; i>=0; i--) mScreen.attach(mTexture[i], mEffects[i], mMesh);
 
-      DistortedEffects.enableEffect(EffectName.SINK);
-      DistortedEffects.enableEffect(EffectName.DISTORT);
+     DistortedEffects.enableEffect(EffectName.SINK);
+     DistortedEffects.enableEffect(EffectName.DISTORT);
 
-      try
-        {
-        Distorted.onCreate(mView.getContext());
-        }
-      catch(Exception ex)
-        {
-        android.util.Log.e("Renderer", ex.getMessage() );
-        }
-      }
+     try
+       {
+       Distorted.onCreate(mView.getContext());
+       }
+     catch(Exception ex)
+       {
+       android.util.Log.e("Renderer", ex.getMessage() );
+       }
+     }
 }
diff --git a/src/main/java/org/distorted/examples/differentbitmaps/DifferentBitmapsSurfaceView.java b/src/main/java/org/distorted/examples/differentbitmaps/DifferentBitmapsSurfaceView.java
index ff96258..07ab986 100644
--- a/src/main/java/org/distorted/examples/differentbitmaps/DifferentBitmapsSurfaceView.java
+++ b/src/main/java/org/distorted/examples/differentbitmaps/DifferentBitmapsSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.differentbitmaps;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -31,6 +33,9 @@ class DifferentBitmapsSurfaceView extends GLSurfaceView
     public DifferentBitmapsSurfaceView(Context context) 
       {
       super(context);
+      final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+      final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+      setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
       setRenderer(new DifferentBitmapsRenderer(this));
       }
 }
diff --git a/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java b/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java
index 4532251..1592001 100644
--- a/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java
+++ b/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java
@@ -118,7 +118,7 @@ class DifferentEffectsRenderer implements GLSurfaceView.Renderer
         mEffects[i].apply(scaleEffect);
         }
 
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsSurfaceView.java b/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsSurfaceView.java
index 40e1cc8..1c8023a 100644
--- a/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsSurfaceView.java
+++ b/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.differenteffects;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -31,6 +33,9 @@ class DifferentEffectsSurfaceView extends GLSurfaceView
     public DifferentEffectsSurfaceView(Context context) 
       {
       super(context);
+      final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+      final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+      setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
       setRenderer(new DifferentEffectsRenderer(this));
       }
 }
diff --git a/src/main/java/org/distorted/examples/dynamic/DynamicRenderer.java b/src/main/java/org/distorted/examples/dynamic/DynamicRenderer.java
index 005e138..b082309 100644
--- a/src/main/java/org/distorted/examples/dynamic/DynamicRenderer.java
+++ b/src/main/java/org/distorted/examples/dynamic/DynamicRenderer.java
@@ -62,7 +62,7 @@ class DynamicRenderer implements GLSurfaceView.Renderer
      mView    = v;
      mMesh    = new MeshFlat(1,1);
      mEffects = new DistortedEffects();
-     mScreen  = new DistortedScreen(mView);
+     mScreen  = new DistortedScreen();
      }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/dynamic/DynamicSurfaceView.java b/src/main/java/org/distorted/examples/dynamic/DynamicSurfaceView.java
index 3270235..32031f0 100644
--- a/src/main/java/org/distorted/examples/dynamic/DynamicSurfaceView.java
+++ b/src/main/java/org/distorted/examples/dynamic/DynamicSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.dynamic;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.view.MotionEvent;
 import android.util.AttributeSet;
@@ -109,6 +111,9 @@ public class DynamicSurfaceView extends GLSurfaceView
         setFocusable(true);
         setFocusableInTouchMode(true);
         DynamicRenderer mRenderer = new DynamicRenderer(this);
+        final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+        setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
         setRenderer(mRenderer);
         }
       }
diff --git a/src/main/java/org/distorted/examples/effectqueue/EffectQueueRenderer.java b/src/main/java/org/distorted/examples/effectqueue/EffectQueueRenderer.java
index 454cc7c..8600c6b 100644
--- a/src/main/java/org/distorted/examples/effectqueue/EffectQueueRenderer.java
+++ b/src/main/java/org/distorted/examples/effectqueue/EffectQueueRenderer.java
@@ -79,7 +79,7 @@ class EffectQueueRenderer implements GLSurfaceView.Renderer, EffectListener
     mEffects.apply(scaleEffect);
     mEffects.registerForMessages(this);
 
-    mScreen = new DistortedScreen(mView);
+    mScreen = new DistortedScreen();
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/effectqueue/EffectQueueSurfaceView.java b/src/main/java/org/distorted/examples/effectqueue/EffectQueueSurfaceView.java
index 944c3bd..da86bf6 100644
--- a/src/main/java/org/distorted/examples/effectqueue/EffectQueueSurfaceView.java
+++ b/src/main/java/org/distorted/examples/effectqueue/EffectQueueSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.effectqueue;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.view.MotionEvent;
 import android.util.AttributeSet;
@@ -90,6 +92,9 @@ public class EffectQueueSurfaceView extends GLSurfaceView
       setFocusable(true);
       setFocusableInTouchMode(true);
       mRenderer = new EffectQueueRenderer(this);
+      final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+      final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+      setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
       setRenderer(mRenderer);
       mRegionV= new Static4D(0,0,RADIUS,RADIUS);
       setEffect(0);  
diff --git a/src/main/java/org/distorted/examples/effects3d/Effects3DRenderer.java b/src/main/java/org/distorted/examples/effects3d/Effects3DRenderer.java
index 20f5981..5fb9b99 100644
--- a/src/main/java/org/distorted/examples/effects3d/Effects3DRenderer.java
+++ b/src/main/java/org/distorted/examples/effects3d/Effects3DRenderer.java
@@ -110,7 +110,7 @@ class Effects3DRenderer implements GLSurfaceView.Renderer
       mCenterNode = new DistortedNode(mCenterTexture, centerEffects, quad);
       mRegionNode = new DistortedNode(mRegionTexture, regionEffects, quad);
 
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       mScreen.setProjection(FOV, NEAR);
       mScreen.attach(mBackgroundTexture, backgroundEffects, quad );
       mScreen.attach(mObjectTexture    , objectEffects    , meshO);
diff --git a/src/main/java/org/distorted/examples/effects3d/Effects3DSurfaceView.java b/src/main/java/org/distorted/examples/effects3d/Effects3DSurfaceView.java
index 76456c1..d02b65d 100644
--- a/src/main/java/org/distorted/examples/effects3d/Effects3DSurfaceView.java
+++ b/src/main/java/org/distorted/examples/effects3d/Effects3DSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.effects3d;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
@@ -40,6 +42,9 @@ class Effects3DSurfaceView extends GLSurfaceView
     if(!isInEditMode())
       {
       mRenderer = new Effects3DRenderer(this);
+      final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+      final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+      setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
       setRenderer(mRenderer);
       }
     }
diff --git a/src/main/java/org/distorted/examples/flag/FlagRenderer.java b/src/main/java/org/distorted/examples/flag/FlagRenderer.java
index 1e3ceae..706aa73 100644
--- a/src/main/java/org/distorted/examples/flag/FlagRenderer.java
+++ b/src/main/java/org/distorted/examples/flag/FlagRenderer.java
@@ -99,7 +99,7 @@ class FlagRenderer implements GLSurfaceView.Renderer
       mEffects.apply( new MatrixEffectQuaternion(mQuat1, mCenter) );
       mEffects.apply( new MatrixEffectQuaternion(mQuat2, mCenter) );
 
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       mScreen.attach(mTexture,mEffects, new MeshCubes(50,30,1) );
       }
 
diff --git a/src/main/java/org/distorted/examples/flag/FlagSurfaceView.java b/src/main/java/org/distorted/examples/flag/FlagSurfaceView.java
index 1ff1b3c..a30d692 100644
--- a/src/main/java/org/distorted/examples/flag/FlagSurfaceView.java
+++ b/src/main/java/org/distorted/examples/flag/FlagSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.flag;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
@@ -43,6 +45,9 @@ class FlagSurfaceView extends GLSurfaceView
       if(!isInEditMode())
         {
         mRenderer = new FlagRenderer(this);
+        final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+        setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
         setRenderer(mRenderer);
         }
       }
diff --git a/src/main/java/org/distorted/examples/girl/GirlRenderer.java b/src/main/java/org/distorted/examples/girl/GirlRenderer.java
index 48d7037..7b37141 100644
--- a/src/main/java/org/distorted/examples/girl/GirlRenderer.java
+++ b/src/main/java/org/distorted/examples/girl/GirlRenderer.java
@@ -129,7 +129,7 @@ class GirlRenderer implements GLSurfaceView.Renderer
       mEffects.apply(new MatrixEffectMove(mMove));
       mEffects.apply(new MatrixEffectScale(mScale));
 
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -166,70 +166,70 @@ class GirlRenderer implements GLSurfaceView.Renderer
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
     
-    public void onSurfaceChanged(GL10 glUnused, int width, int height) 
-      { 
-      if( (float)bmpHeight/bmpWidth > (float)height/width )
-        {
-        int w = (height*bmpWidth)/bmpHeight;
-        float factor = (float)height/bmpHeight;
-
-        mMove.set((width-w)/2,0,0);
-        mScale.set(factor,factor,factor);
-        }
-      else
-        {
-        int h = (width*bmpHeight)/bmpWidth;
-        float factor = (float)width/bmpWidth;
-
-        mMove.set(0,(height-h)/2,0);
-        mScale.set(factor,factor,factor);
-        }
+   public void onSurfaceChanged(GL10 glUnused, int width, int height)
+     {
+     if( (float)bmpHeight/bmpWidth > (float)height/width )
+       {
+       int w = (height*bmpWidth)/bmpHeight;
+       float factor = (float)height/bmpHeight;
+
+       mMove.set((width-w)/2,0,0);
+       mScale.set(factor,factor,factor);
+       }
+     else
+       {
+       int h = (width*bmpHeight)/bmpWidth;
+       float factor = (float)width/bmpWidth;
+
+       mMove.set(0,(height-h)/2,0);
+       mScale.set(factor,factor,factor);
+       }
       
-      mScreen.resize(width, height);
-      }
+     mScreen.resize(width, height);
+     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
     
-    public void onSurfaceCreated(GL10 glUnused, EGLConfig config) 
-      {
-      InputStream is = mView.getContext().getResources().openRawResource(R.raw.girl);
-      Bitmap bitmap;
+   public void onSurfaceCreated(GL10 glUnused, EGLConfig config)
+     {
+     InputStream is = mView.getContext().getResources().openRawResource(R.raw.girl);
+     Bitmap bitmap;
         
-      try 
-        {
-        bitmap = BitmapFactory.decodeStream(is);
-        } 
-      finally 
-        {
-        try 
-          {
-          is.close();
-          } 
-        catch(IOException e) { }
-        }  
+     try
+       {
+       bitmap = BitmapFactory.decodeStream(is);
+       }
+     finally
+       {
+       try
+         {
+         is.close();
+         }
+       catch(IOException e) { }
+       }
       
-      bmpHeight = bitmap.getHeight();
-      bmpWidth  = bitmap.getWidth();
+     bmpHeight = bitmap.getHeight();
+     bmpWidth  = bitmap.getWidth();
 
-      if( mTexture==null ) mTexture = new DistortedTexture(bmpWidth,bmpHeight);
-      mTexture.setTexture(bitmap);
+     if( mTexture==null ) mTexture = new DistortedTexture(bmpWidth,bmpHeight);
+     mTexture.setTexture(bitmap);
 
-      if( mMesh==null ) mMesh = new MeshFlat(30,30*bmpHeight/bmpWidth);
+     if( mMesh==null ) mMesh = new MeshFlat(30,30*bmpHeight/bmpWidth);
 
-      mScreen.detachAll();
-      mScreen.attach(mTexture,mEffects,mMesh);
+     mScreen.detachAll();
+     mScreen.attach(mTexture,mEffects,mMesh);
 
-      DistortedEffects.enableEffect(EffectName.DISTORT);
-      DistortedEffects.enableEffect(EffectName.SINK);
-      DistortedEffects.enableEffect(EffectName.SWIRL);
+     DistortedEffects.enableEffect(EffectName.DISTORT);
+     DistortedEffects.enableEffect(EffectName.SINK);
+     DistortedEffects.enableEffect(EffectName.SWIRL);
 
-      try
-        {
-        Distorted.onCreate(mView.getContext());
-        }
-      catch(Exception ex)
-        {
-        android.util.Log.e("Renderer", ex.getMessage() );
-        }
-      }
+     try
+       {
+       Distorted.onCreate(mView.getContext());
+       }
+     catch(Exception ex)
+       {
+       android.util.Log.e("Renderer", ex.getMessage() );
+       }
+     }
 }
diff --git a/src/main/java/org/distorted/examples/girl/GirlSurfaceView.java b/src/main/java/org/distorted/examples/girl/GirlSurfaceView.java
index b897b5b..2881a9d 100644
--- a/src/main/java/org/distorted/examples/girl/GirlSurfaceView.java
+++ b/src/main/java/org/distorted/examples/girl/GirlSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.girl;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.util.AttributeSet;
 
@@ -38,6 +40,9 @@ class GirlSurfaceView extends GLSurfaceView
       if(!isInEditMode())
         {
         mRenderer = new GirlRenderer(this);
+        final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+        setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
         setRenderer(mRenderer);
         }
       }
diff --git a/src/main/java/org/distorted/examples/glow/GlowRenderer.java b/src/main/java/org/distorted/examples/glow/GlowRenderer.java
index 3cc4cac..32ca149 100644
--- a/src/main/java/org/distorted/examples/glow/GlowRenderer.java
+++ b/src/main/java/org/distorted/examples/glow/GlowRenderer.java
@@ -131,7 +131,7 @@ class GlowRenderer implements GLSurfaceView.Renderer,EffectListener
 
       makeGlow(0);
 
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       mScreen.attach(root);
       }
 
diff --git a/src/main/java/org/distorted/examples/glow/GlowSurfaceView.java b/src/main/java/org/distorted/examples/glow/GlowSurfaceView.java
index 50b4b42..b046dd1 100644
--- a/src/main/java/org/distorted/examples/glow/GlowSurfaceView.java
+++ b/src/main/java/org/distorted/examples/glow/GlowSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.glow;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -29,6 +31,9 @@ class GlowSurfaceView extends GLSurfaceView
     public GlowSurfaceView(Context context)
       {
       super(context);
+      final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+      final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+      setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
       setRenderer(new GlowRenderer(this));
       }
 }
diff --git a/src/main/java/org/distorted/examples/listener/ListenerRenderer.java b/src/main/java/org/distorted/examples/listener/ListenerRenderer.java
index d32349d..0e19c78 100644
--- a/src/main/java/org/distorted/examples/listener/ListenerRenderer.java
+++ b/src/main/java/org/distorted/examples/listener/ListenerRenderer.java
@@ -71,7 +71,7 @@ class ListenerRenderer implements GLSurfaceView.Renderer,EffectListener
       mView = v;
       mEffects = new DistortedEffects();
       mEffects.registerForMessages(this);
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       mRnd = new Random(0);
 
       mMove = new Static3D(0,0,0);
diff --git a/src/main/java/org/distorted/examples/listener/ListenerSurfaceView.java b/src/main/java/org/distorted/examples/listener/ListenerSurfaceView.java
index 60823ad..0aea398 100644
--- a/src/main/java/org/distorted/examples/listener/ListenerSurfaceView.java
+++ b/src/main/java/org/distorted/examples/listener/ListenerSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.listener;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -31,6 +33,9 @@ class ListenerSurfaceView extends GLSurfaceView
     public ListenerSurfaceView(Context context) 
       {
       super(context);
+      final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+      final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+      setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
       setRenderer(new ListenerRenderer(this));
       }
 }
diff --git a/src/main/java/org/distorted/examples/matrix3d/Matrix3DRenderer.java b/src/main/java/org/distorted/examples/matrix3d/Matrix3DRenderer.java
index 1451806..272e08a 100644
--- a/src/main/java/org/distorted/examples/matrix3d/Matrix3DRenderer.java
+++ b/src/main/java/org/distorted/examples/matrix3d/Matrix3DRenderer.java
@@ -45,7 +45,7 @@ class Matrix3DRenderer implements GLSurfaceView.Renderer
       mView = v;
       Matrix3DActivity act = (Matrix3DActivity)v.getContext();
       mTexture= act.getTexture();
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       mScreen.attach(mTexture,act.getEffects(),act.getMesh());
       mScreen.setProjection(60.0f,0.1f);
       }
diff --git a/src/main/java/org/distorted/examples/matrix3d/Matrix3DSurfaceView.java b/src/main/java/org/distorted/examples/matrix3d/Matrix3DSurfaceView.java
index 08bae53..a6529c9 100644
--- a/src/main/java/org/distorted/examples/matrix3d/Matrix3DSurfaceView.java
+++ b/src/main/java/org/distorted/examples/matrix3d/Matrix3DSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.matrix3d;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.util.AttributeSet;
 
@@ -38,6 +40,9 @@ class Matrix3DSurfaceView extends GLSurfaceView
     if(!isInEditMode())
       {
       mRenderer = new Matrix3DRenderer(this);
+      final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+      final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+      setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
       setRenderer(mRenderer);
       }
     }
diff --git a/src/main/java/org/distorted/examples/mirror/MirrorRenderer.java b/src/main/java/org/distorted/examples/mirror/MirrorRenderer.java
index fd523bc..ea7ef6b 100644
--- a/src/main/java/org/distorted/examples/mirror/MirrorRenderer.java
+++ b/src/main/java/org/distorted/examples/mirror/MirrorRenderer.java
@@ -73,7 +73,7 @@ class MirrorRenderer implements GLSurfaceView.Renderer
       { 
       mView    = view;
       mQuad    = new MeshFlat(1,1);
-      mScreen  = new DistortedScreen(mView);
+      mScreen  = new DistortedScreen();
 
       mEffectsMirror    = new DistortedEffects();
       mEffectsHead      = new DistortedEffects();
diff --git a/src/main/java/org/distorted/examples/mirror/MirrorSurfaceView.java b/src/main/java/org/distorted/examples/mirror/MirrorSurfaceView.java
index d360595..ae92223 100644
--- a/src/main/java/org/distorted/examples/mirror/MirrorSurfaceView.java
+++ b/src/main/java/org/distorted/examples/mirror/MirrorSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.mirror;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.util.AttributeSet;
 
@@ -38,6 +40,9 @@ class MirrorSurfaceView extends GLSurfaceView
       if(!isInEditMode())
         {
         mRenderer = new MirrorRenderer(this);
+        final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+        setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
         setRenderer(mRenderer);
         }
       }
diff --git a/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java b/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
index 48ecba6..021da39 100644
--- a/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
+++ b/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
@@ -82,7 +82,7 @@ class MonaLisaRenderer implements GLSurfaceView.Renderer
       mEffects.apply(new MatrixEffectMove(mMove));
       mEffects.apply(new MatrixEffectScale(mScale));
 
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/monalisa/MonaLisaSurfaceView.java b/src/main/java/org/distorted/examples/monalisa/MonaLisaSurfaceView.java
index 88d3246..d6fe5b7 100644
--- a/src/main/java/org/distorted/examples/monalisa/MonaLisaSurfaceView.java
+++ b/src/main/java/org/distorted/examples/monalisa/MonaLisaSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.monalisa;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -31,6 +33,9 @@ class MonaLisaSurfaceView extends GLSurfaceView
     public MonaLisaSurfaceView(Context context) 
       {
       super(context);
+      final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+      final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+      setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
       setRenderer(new MonaLisaRenderer(this));
       }
 }
diff --git a/src/main/java/org/distorted/examples/movingeffects/MovingEffectsRenderer.java b/src/main/java/org/distorted/examples/movingeffects/MovingEffectsRenderer.java
index 7619938..a4ede66 100644
--- a/src/main/java/org/distorted/examples/movingeffects/MovingEffectsRenderer.java
+++ b/src/main/java/org/distorted/examples/movingeffects/MovingEffectsRenderer.java
@@ -62,7 +62,7 @@ class MovingEffectsRenderer implements GLSurfaceView.Renderer
 
      mView   = v;
      mEffects= new DistortedEffects();
-     mScreen = new DistortedScreen(mView);
+     mScreen = new DistortedScreen();
      mRefresh= true;
      }
 
diff --git a/src/main/java/org/distorted/examples/movingeffects/MovingEffectsSurfaceView.java b/src/main/java/org/distorted/examples/movingeffects/MovingEffectsSurfaceView.java
index 7675788..38787f0 100644
--- a/src/main/java/org/distorted/examples/movingeffects/MovingEffectsSurfaceView.java
+++ b/src/main/java/org/distorted/examples/movingeffects/MovingEffectsSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.movingeffects;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.Paint.Style;
@@ -93,20 +95,23 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
       mRegionVertex   = new Static4D(0,0,0,0);
       mDistort        = new Static3D(0,0,0);
 
-      mRenderer = new MovingEffectsRenderer(this);
-
       if(!isInEditMode())
         {
+        mRenderer = new MovingEffectsRenderer(this);
+
         setFocusable(true);
         setFocusableInTouchMode(true);
+        final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+        setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
         setRenderer(mRenderer);
-        }
 
-      mEffectDistort = new VertexEffectDistort( mDistort , mCenterVertex, mRegionVertex);
-      mEffectSink    = new VertexEffectSink(new Static1D(10), mCenterVertex, mRegionVertex);
-      mEffectSwirl   = new VertexEffectSwirl( new Static1D(30), mCenterVertex, mRegionVertex);
-      mEffectAlpha   = new FragmentEffectAlpha(new Static1D(0.5f), mRegionFragment, true);
-      mEffectChroma  = new FragmentEffectChroma(new Static1D(0.5f), new Static3D(1,0,0), mRegionFragment, true);
+        mEffectDistort = new VertexEffectDistort( mDistort , mCenterVertex, mRegionVertex);
+        mEffectSink    = new VertexEffectSink(new Static1D(10), mCenterVertex, mRegionVertex);
+        mEffectSwirl   = new VertexEffectSwirl( new Static1D(30), mCenterVertex, mRegionVertex);
+        mEffectAlpha   = new FragmentEffectAlpha(new Static1D(0.5f), mRegionFragment, true);
+        mEffectChroma  = new FragmentEffectChroma(new Static1D(0.5f), new Static3D(1,0,0), mRegionFragment, true);
+        }
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/multiblur/MultiblurRenderer.java b/src/main/java/org/distorted/examples/multiblur/MultiblurRenderer.java
index 0141c82..8f63c70 100644
--- a/src/main/java/org/distorted/examples/multiblur/MultiblurRenderer.java
+++ b/src/main/java/org/distorted/examples/multiblur/MultiblurRenderer.java
@@ -109,7 +109,7 @@ class MultiblurRenderer implements GLSurfaceView.Renderer
       mQuat1 = new Static4D(0,0,0,1);  // unity
       mQuat2 = new Static4D(0,0,0,1);  // quaternions
 
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       mScreen.setDebug(DistortedScreen.DEBUG_FPS);
 
       for(int i=0; i<NUM_OBJECTS; i++)
diff --git a/src/main/java/org/distorted/examples/multiblur/MultiblurSurfaceView.java b/src/main/java/org/distorted/examples/multiblur/MultiblurSurfaceView.java
index 3a550bc..a4fbe85 100644
--- a/src/main/java/org/distorted/examples/multiblur/MultiblurSurfaceView.java
+++ b/src/main/java/org/distorted/examples/multiblur/MultiblurSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.multiblur;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
@@ -46,6 +48,9 @@ class MultiblurSurfaceView extends GLSurfaceView
       if(!isInEditMode())
         {
         mRenderer = new MultiblurRenderer(this);
+        final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+        setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
         setRenderer(mRenderer);
         Toast.makeText(context, R.string.example_rotate_toast , Toast.LENGTH_SHORT).show();
         }
diff --git a/src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java b/src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java
index 680d858..ec95c30 100644
--- a/src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java
+++ b/src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java
@@ -140,7 +140,7 @@ class OlimpicRenderer implements GLSurfaceView.Renderer
         for(int j=0; j<NUM_LEAVES; j++) mCircleNode[i].attach(mLeaf, mEffects[j], mMesh);
         }
 
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       mScreen.attach(mRoot);
       }
 
diff --git a/src/main/java/org/distorted/examples/olimpic/OlimpicSurfaceView.java b/src/main/java/org/distorted/examples/olimpic/OlimpicSurfaceView.java
index 05a2d75..ab6d667 100644
--- a/src/main/java/org/distorted/examples/olimpic/OlimpicSurfaceView.java
+++ b/src/main/java/org/distorted/examples/olimpic/OlimpicSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.olimpic;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.util.AttributeSet;
 
@@ -38,6 +40,9 @@ class OlimpicSurfaceView extends GLSurfaceView
       if(!isInEditMode())
         {
         mRenderer = new OlimpicRenderer(this);
+        final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+        setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
         setRenderer(mRenderer);
         }
       }
diff --git a/src/main/java/org/distorted/examples/plainmonalisa/RenderThread.java b/src/main/java/org/distorted/examples/plainmonalisa/RenderThread.java
index 1154d66..3fc02a9 100644
--- a/src/main/java/org/distorted/examples/plainmonalisa/RenderThread.java
+++ b/src/main/java/org/distorted/examples/plainmonalisa/RenderThread.java
@@ -105,7 +105,7 @@ class RenderThread extends Thread
     mEffects.apply(new MatrixEffectMove(mMove));
     mEffects.apply(new MatrixEffectScale(mScale));
 
-    mScreen = new DistortedScreen(null);
+    mScreen = new DistortedScreen();
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/projection/ProjectionRenderer.java b/src/main/java/org/distorted/examples/projection/ProjectionRenderer.java
index 370d94d..3bcf257 100644
--- a/src/main/java/org/distorted/examples/projection/ProjectionRenderer.java
+++ b/src/main/java/org/distorted/examples/projection/ProjectionRenderer.java
@@ -58,7 +58,7 @@ class ProjectionRenderer implements GLSurfaceView.Renderer
       { 
       mView   = view;
       mEffects= new DistortedEffects();
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
 
       mVector = new Static3D(0,0,0);
       mPoint1 = new Static3D(0,0,0);
diff --git a/src/main/java/org/distorted/examples/projection/ProjectionSurfaceView.java b/src/main/java/org/distorted/examples/projection/ProjectionSurfaceView.java
index 7187254..e45300c 100644
--- a/src/main/java/org/distorted/examples/projection/ProjectionSurfaceView.java
+++ b/src/main/java/org/distorted/examples/projection/ProjectionSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.projection;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.util.AttributeSet;
 
@@ -38,6 +40,9 @@ class ProjectionSurfaceView extends GLSurfaceView
       if(!isInEditMode())
         {
         mRenderer = new ProjectionRenderer(this);
+        final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+        setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
         setRenderer(mRenderer);
         }
       }
diff --git a/src/main/java/org/distorted/examples/quaternion/QuaternionRenderer.java b/src/main/java/org/distorted/examples/quaternion/QuaternionRenderer.java
index ad96774..01b5e04 100644
--- a/src/main/java/org/distorted/examples/quaternion/QuaternionRenderer.java
+++ b/src/main/java/org/distorted/examples/quaternion/QuaternionRenderer.java
@@ -96,7 +96,7 @@ class QuaternionRenderer implements GLSurfaceView.Renderer
     effects.apply(new MatrixEffectScale(mScale));
     effects.apply( new MatrixEffectQuaternion(rot,mCenter) );
 
-    mScreen = new DistortedScreen(mView);
+    mScreen = new DistortedScreen();
     mScreen.attach(mTexture,effects,mMesh);
     }
 
diff --git a/src/main/java/org/distorted/examples/quaternion/QuaternionSurfaceView.java b/src/main/java/org/distorted/examples/quaternion/QuaternionSurfaceView.java
index 6eae446..ab76609 100644
--- a/src/main/java/org/distorted/examples/quaternion/QuaternionSurfaceView.java
+++ b/src/main/java/org/distorted/examples/quaternion/QuaternionSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.quaternion;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -29,6 +31,9 @@ class QuaternionSurfaceView extends GLSurfaceView
   public QuaternionSurfaceView(Context context)
     {
     super(context);
+    final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+    final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+    setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
     setRenderer(new QuaternionRenderer(this));
     }
   }
diff --git a/src/main/java/org/distorted/examples/save/SaveRenderer.java b/src/main/java/org/distorted/examples/save/SaveRenderer.java
index 075f473..c668a57 100644
--- a/src/main/java/org/distorted/examples/save/SaveRenderer.java
+++ b/src/main/java/org/distorted/examples/save/SaveRenderer.java
@@ -101,7 +101,7 @@ class SaveRenderer implements GLSurfaceView.Renderer
     mEffects.apply( new MatrixEffectScale(mScaleMain));
     mEffects.apply( new MatrixEffectScale(mScaleFactor));
 
-    mScreen = new DistortedScreen(mView);
+    mScreen = new DistortedScreen();
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/save/SaveSurfaceView.java b/src/main/java/org/distorted/examples/save/SaveSurfaceView.java
index e5f482b..44d265f 100644
--- a/src/main/java/org/distorted/examples/save/SaveSurfaceView.java
+++ b/src/main/java/org/distorted/examples/save/SaveSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.save;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.util.AttributeSet;
 
@@ -38,6 +40,9 @@ class SaveSurfaceView extends GLSurfaceView
     if(!isInEditMode())
       {
       mRenderer = new SaveRenderer(this);
+      final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+      final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+      setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
       setRenderer(mRenderer);
       }
     }
diff --git a/src/main/java/org/distorted/examples/sink/SinkRenderer.java b/src/main/java/org/distorted/examples/sink/SinkRenderer.java
index 20b23bc..5520462 100644
--- a/src/main/java/org/distorted/examples/sink/SinkRenderer.java
+++ b/src/main/java/org/distorted/examples/sink/SinkRenderer.java
@@ -75,7 +75,7 @@ class SinkRenderer implements GLSurfaceView.Renderer
     mEffects.apply(new MatrixEffectMove(mMove));
     mEffects.apply(new MatrixEffectScale(mScale));
 
-    mScreen = new DistortedScreen(mView);
+    mScreen = new DistortedScreen();
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/sink/SinkSurfaceView.java b/src/main/java/org/distorted/examples/sink/SinkSurfaceView.java
index bef9027..a86fd98 100644
--- a/src/main/java/org/distorted/examples/sink/SinkSurfaceView.java
+++ b/src/main/java/org/distorted/examples/sink/SinkSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.sink;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -29,6 +31,9 @@ class SinkSurfaceView extends GLSurfaceView
   public SinkSurfaceView(Context context) 
     {
     super(context);
+    final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+    final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+    setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
     setRenderer(new SinkRenderer(this));
     }
   }
diff --git a/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java b/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java
index 627b9e8..823768f 100644
--- a/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java
+++ b/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java
@@ -141,7 +141,7 @@ class StarWarsRenderer implements GLSurfaceView.Renderer, EffectListener
         mStarEffects[i] = new DistortedEffects(mStarEffects[0], Distorted.CLONE_VERTEX);
       }
 
-    mScreen = new DistortedScreen(mView);
+    mScreen = new DistortedScreen();
     mScreen.setProjection(FOV_ANGLE, 0.02f);
     }
 
diff --git a/src/main/java/org/distorted/examples/starwars/StarWarsSurfaceView.java b/src/main/java/org/distorted/examples/starwars/StarWarsSurfaceView.java
index 1558f12..1528356 100644
--- a/src/main/java/org/distorted/examples/starwars/StarWarsSurfaceView.java
+++ b/src/main/java/org/distorted/examples/starwars/StarWarsSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.starwars;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -32,6 +34,9 @@ class StarWarsSurfaceView extends GLSurfaceView
     {
     super(context);
     mRenderer = new StarWarsRenderer(this);
+    final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+    final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+    setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
     setRenderer(mRenderer);
     }
 
diff --git a/src/main/java/org/distorted/examples/stencil/StencilRenderer.java b/src/main/java/org/distorted/examples/stencil/StencilRenderer.java
index 350e99d..a9a5a67 100644
--- a/src/main/java/org/distorted/examples/stencil/StencilRenderer.java
+++ b/src/main/java/org/distorted/examples/stencil/StencilRenderer.java
@@ -136,7 +136,7 @@ class StencilRenderer implements GLSurfaceView.Renderer
       mCube2Node.glDepthMask(true);                                              // Write to depth buffer
       /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
-      mScreen = new DistortedScreen(mView);
+      mScreen = new DistortedScreen();
       mScreen.glClearColor(1.0f,1.0f,1.0f,1.0f);
       mView.setEGLConfigChooser(5,6,5,0,16,8);       // Screen: 16 bit depth, 8 bit STENCIL
 
diff --git a/src/main/java/org/distorted/examples/stencil/StencilSurfaceView.java b/src/main/java/org/distorted/examples/stencil/StencilSurfaceView.java
index 9153803..9f4fada 100644
--- a/src/main/java/org/distorted/examples/stencil/StencilSurfaceView.java
+++ b/src/main/java/org/distorted/examples/stencil/StencilSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.stencil;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.util.AttributeSet;
 
@@ -38,6 +40,9 @@ class StencilSurfaceView extends GLSurfaceView
      if(!isInEditMode())
        {
        mRenderer = new StencilRenderer(this);
+       final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+       final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+       setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
        setRenderer(mRenderer);
        }
      }
diff --git a/src/main/java/org/distorted/examples/wind/WindRenderer.java b/src/main/java/org/distorted/examples/wind/WindRenderer.java
index a3c01ba..7cc9312 100644
--- a/src/main/java/org/distorted/examples/wind/WindRenderer.java
+++ b/src/main/java/org/distorted/examples/wind/WindRenderer.java
@@ -47,7 +47,6 @@ import javax.microedition.khronos.opengles.GL10;
 class WindRenderer implements GLSurfaceView.Renderer
 {
    private GLSurfaceView mView;
-   private DistortedEffects mEffects;
    private DistortedTexture mTexture;
    private DistortedScreen mScreen;
    private WindEffectsManager mManager;
@@ -61,27 +60,28 @@ class WindRenderer implements GLSurfaceView.Renderer
       { 
       mView = view;
 
-      mEffects = new DistortedEffects();
       mTexture = new DistortedTexture(50,30);
       mManager = new WindEffectsManager(mTexture);
-      mScreen  = new DistortedScreen(mView);
+      mScreen  = new DistortedScreen();
 
-      mScreen.attach(mTexture,mEffects,new MeshCubes(50,30,1));
+      DistortedEffects effects = new DistortedEffects();
+
+      mScreen.attach(mTexture,effects,new MeshCubes(50,30,1));
 
       mObjWidth = mTexture.getWidth();
       mObjHeight= mTexture.getHeight();
 
       mMove = new Static3D(0,0,0);
       mScale= new Static3D(1,1,1);
-      mEffects.apply( new MatrixEffectMove(mMove));
-      mEffects.apply( new MatrixEffectScale(mScale));
+      effects.apply( new MatrixEffectMove(mMove));
+      effects.apply( new MatrixEffectScale(mScale));
 
       Static1D angle = new Static1D(-45);
       Static3D axis  = new Static3D(0,0,1);
       Static3D center= new Static3D(0,mObjHeight/2,0);
 
-      mEffects.apply( new MatrixEffectRotate(angle, axis, center) );
-      mManager.apply(mEffects,mWind);
+      effects.apply( new MatrixEffectRotate(angle, axis, center) );
+      mManager.apply(effects,mWind);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/wind/WindSurfaceView.java b/src/main/java/org/distorted/examples/wind/WindSurfaceView.java
index fb6cbaf..84900d2 100644
--- a/src/main/java/org/distorted/examples/wind/WindSurfaceView.java
+++ b/src/main/java/org/distorted/examples/wind/WindSurfaceView.java
@@ -19,7 +19,9 @@
 
 package org.distorted.examples.wind;
 
+import android.app.ActivityManager;
 import android.content.Context;
+import android.content.pm.ConfigurationInfo;
 import android.opengl.GLSurfaceView;
 import android.util.AttributeSet;
 
@@ -38,6 +40,9 @@ class WindSurfaceView extends GLSurfaceView
       if(!isInEditMode())
         {
         mRenderer = new WindRenderer(this);
+        final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
+        setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
         setRenderer(mRenderer);
         }
       }
