commit d218d64e631501d96d8832dc78bc0d29b4a1511d
Author: leszek <leszek@koltunski.pl>
Date:   Fri Feb 10 01:15:00 2017 +0000

    Major: change of API.
    
    Split DFramebuffer into Framebuffer and Screen; introduce the 'DistortedInputSurface' and 'DistortedOutputSurface' interfaces.

diff --git a/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRenderer.java b/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRenderer.java
index f84dc34..70d07e7 100644
--- a/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRenderer.java
+++ b/src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRenderer.java
@@ -28,6 +28,7 @@ import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.MeshFlat;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.EffectTypes;
@@ -47,7 +48,7 @@ class AroundTheWorldRenderer implements GLSurfaceView.Renderer
    private DistortedEffects mEffects;
    private DistortedTexture mTexture;
    private MeshFlat mMesh;
-   private DistortedFramebuffer mScreen;
+   private DistortedScreen mScreen;
    private AroundTheWorldEffectsManager mManager;
    private int mObjWidth, mObjHeight;
 
@@ -62,7 +63,7 @@ class AroundTheWorldRenderer implements GLSurfaceView.Renderer
       mManager = new AroundTheWorldEffectsManager();
       mEffects = new DistortedEffects();
       mManager.apply(mEffects);
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/bean/BeanRenderer.java b/src/main/java/org/distorted/examples/bean/BeanRenderer.java
index db051aa..dd013c0 100644
--- a/src/main/java/org/distorted/examples/bean/BeanRenderer.java
+++ b/src/main/java/org/distorted/examples/bean/BeanRenderer.java
@@ -29,6 +29,7 @@ import org.distorted.examples.R;
 
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.EffectTypes;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedTexture;
@@ -49,7 +50,7 @@ class BeanRenderer implements GLSurfaceView.Renderer
    private GLSurfaceView mView;
    private DistortedTexture mTexture;
    private DistortedEffects mEffects;
-   private DistortedFramebuffer mScreen;
+   private DistortedScreen mScreen;
    private MeshFlat mMesh;
    private int bmpHeight, bmpWidth;
     
@@ -89,7 +90,7 @@ class BeanRenderer implements GLSurfaceView.Renderer
       mEffects.distort(dLeft , pLeft , rLeft );
       mEffects.distort(dRight, pRight, rRight);
 
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/blur/BlurRenderer.java b/src/main/java/org/distorted/examples/blur/BlurRenderer.java
index 96a31e0..faf9ab3 100644
--- a/src/main/java/org/distorted/examples/blur/BlurRenderer.java
+++ b/src/main/java/org/distorted/examples/blur/BlurRenderer.java
@@ -28,6 +28,7 @@ import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.EffectTypes;
 import org.distorted.library.MeshFlat;
@@ -48,7 +49,7 @@ class BlurRenderer implements GLSurfaceView.Renderer
     private GLSurfaceView mView;
     private DistortedTexture mTexture;
     private DistortedEffects mEffects;
-    private DistortedFramebuffer mScreen;
+    private DistortedScreen mScreen;
     private MeshFlat mMesh;
     private Static1D mRadiusSta;
     private int bmpHeight, bmpWidth;
@@ -60,7 +61,7 @@ class BlurRenderer implements GLSurfaceView.Renderer
       mView    = v;
       mMesh    = new MeshFlat(1,1);
       mEffects = new DistortedEffects();
-      mScreen  = new DistortedFramebuffer(0);
+      mScreen  = new DistortedScreen();
 
       mRadiusSta = new Static1D(5);
       Dynamic1D radiusDyn = new Dynamic1D();
diff --git a/src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java b/src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java
index 83e9baa..cdde0d4 100644
--- a/src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java
+++ b/src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java
@@ -29,6 +29,7 @@ import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.MeshFlat;
 import org.distorted.library.EffectTypes;
@@ -51,7 +52,7 @@ class CatAndDogRenderer implements GLSurfaceView.Renderer
     private DistortedEffects mEffects;
     private DistortedTexture mTexture;
     private MeshFlat mMesh;
-    private DistortedFramebuffer mScreen;
+    private DistortedScreen mScreen;
     private int bmpHeight, bmpWidth;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -78,7 +79,7 @@ class CatAndDogRenderer implements GLSurfaceView.Renderer
 
       mEffects.alpha( alphaDyn, alphaRegion, false );
 
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/check/CheckRenderer.java b/src/main/java/org/distorted/examples/check/CheckRenderer.java
index a0526b3..9a8b8b2 100644
--- a/src/main/java/org/distorted/examples/check/CheckRenderer.java
+++ b/src/main/java/org/distorted/examples/check/CheckRenderer.java
@@ -30,6 +30,7 @@ import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.MeshFlat;
 import org.distorted.library.EffectTypes;
@@ -59,7 +60,7 @@ class CheckRenderer implements GLSurfaceView.Renderer
     private DistortedTexture mTexture;
     private DistortedEffects mEffects;
     private MeshFlat mMesh;
-    private DistortedFramebuffer mScreen;
+    private DistortedScreen mScreen;
     private int bmpHeight, bmpWidth;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -74,7 +75,7 @@ class CheckRenderer implements GLSurfaceView.Renderer
       DistortedEffects.setMaxVertex(act.getMaxV());
       DistortedEffects.setMaxFragment(act.getMaxF());
 
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/cubes/CubesRenderer.java b/src/main/java/org/distorted/examples/cubes/CubesRenderer.java
index d6016a5..d161052 100644
--- a/src/main/java/org/distorted/examples/cubes/CubesRenderer.java
+++ b/src/main/java/org/distorted/examples/cubes/CubesRenderer.java
@@ -29,6 +29,7 @@ import org.distorted.examples.R;
 
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.MeshObject;
 import org.distorted.library.EffectTypes;
@@ -50,7 +51,7 @@ class CubesRenderer implements GLSurfaceView.Renderer
     private DistortedTexture mTexture;
     private DistortedEffects mEffects;
     private MeshObject mMesh;
-    private DistortedFramebuffer mScreen;
+    private DistortedScreen mScreen;
     private DynamicQuat mQuatInt1, mQuatInt2;
     private int mObjWidth, mObjHeight;
 
@@ -81,7 +82,7 @@ class CubesRenderer implements GLSurfaceView.Renderer
       mQuatInt1.add(mQuat1);
       mQuatInt2.add(mQuat2);
 
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/deform/DeformRenderer.java b/src/main/java/org/distorted/examples/deform/DeformRenderer.java
index cc74461..ffa644d 100644
--- a/src/main/java/org/distorted/examples/deform/DeformRenderer.java
+++ b/src/main/java/org/distorted/examples/deform/DeformRenderer.java
@@ -25,6 +25,7 @@ import javax.microedition.khronos.opengles.GL10;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.MeshObject;
 import org.distorted.library.MeshFlat;
@@ -54,7 +55,7 @@ class DeformRenderer implements GLSurfaceView.Renderer
    private DistortedTexture fpsTexture, stretchTexture;
    private DistortedEffects fpsEffects, stretchEffects;
    private MeshObject fpsMesh, stretchMesh;
-   private DistortedFramebuffer mScreen;
+   private DistortedScreen mScreen;
    private Static3D touchPoint;
 
    private Dynamic3D mReleasedDistortDynamic;
@@ -151,7 +152,7 @@ class DeformRenderer implements GLSurfaceView.Renderer
 
       mMovingShearDynamic.add(vShear[0]);
 
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/differentbitmaps/DifferentBitmapsRenderer.java b/src/main/java/org/distorted/examples/differentbitmaps/DifferentBitmapsRenderer.java
index 037e24e..f715cf7 100644
--- a/src/main/java/org/distorted/examples/differentbitmaps/DifferentBitmapsRenderer.java
+++ b/src/main/java/org/distorted/examples/differentbitmaps/DifferentBitmapsRenderer.java
@@ -29,6 +29,7 @@ import org.distorted.examples.R;
 
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.MeshFlat;
@@ -53,7 +54,7 @@ class DifferentBitmapsRenderer implements GLSurfaceView.Renderer
    private DistortedTexture[] mTexture;
    private DistortedEffects[] mEffects;
    private MeshFlat mMesh;
-   private DistortedFramebuffer mScreen;
+   private DistortedScreen mScreen;
    private int bmpHeight, bmpWidth;
     
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -77,7 +78,7 @@ class DifferentBitmapsRenderer implements GLSurfaceView.Renderer
       mEffects[0].sink( new Static1D(8), mPoint, new Static4D(0,0,80,80));  // enlarge the nose
       mEffects[0].distort(dDistort,mPoint);                                 // keep moving the whole bitmap left and right.
 
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java b/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java
index f996a27..7078744 100644
--- a/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java
+++ b/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java
@@ -30,6 +30,7 @@ import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.MeshFlat;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.EffectTypes;
@@ -54,7 +55,7 @@ class DifferentEffectsRenderer implements GLSurfaceView.Renderer
    private DistortedEffects[] mEffects;
    private DistortedTexture mTexture;
    private MeshFlat mMesh;
-   private DistortedFramebuffer mScreen;
+   private DistortedScreen mScreen;
    private int bmpHeight, bmpWidth;
     
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -94,7 +95,7 @@ class DifferentEffectsRenderer implements GLSurfaceView.Renderer
 
       mEffects[2].chroma(chromaDyn, new Static3D(0,1,0) );
 
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/dynamic/DynamicRenderer.java b/src/main/java/org/distorted/examples/dynamic/DynamicRenderer.java
index 9e032a6..b96207b 100644
--- a/src/main/java/org/distorted/examples/dynamic/DynamicRenderer.java
+++ b/src/main/java/org/distorted/examples/dynamic/DynamicRenderer.java
@@ -31,6 +31,7 @@ import android.opengl.GLSurfaceView;
 
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.MeshFlat;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.Distorted;
@@ -42,7 +43,7 @@ class DynamicRenderer implements GLSurfaceView.Renderer
    private DynamicSurfaceView mView;
    private DistortedTexture mTexture;
    private DistortedEffects mEffects;
-   private DistortedFramebuffer mScreen;
+   private DistortedScreen mScreen;
    private MeshFlat mMesh;
    private Canvas mCanvas;
    private Bitmap mBitmap;
@@ -63,7 +64,7 @@ class DynamicRenderer implements GLSurfaceView.Renderer
      mView   = v;
      mMesh = new MeshFlat(1,1);
      mEffects = new DistortedEffects();
-     mScreen = new DistortedFramebuffer(0);
+     mScreen = new DistortedScreen();
      }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/effectqueue/EffectQueueRenderer.java b/src/main/java/org/distorted/examples/effectqueue/EffectQueueRenderer.java
index f553405..231a3ba 100644
--- a/src/main/java/org/distorted/examples/effectqueue/EffectQueueRenderer.java
+++ b/src/main/java/org/distorted/examples/effectqueue/EffectQueueRenderer.java
@@ -31,6 +31,7 @@ import android.opengl.GLSurfaceView;
 
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.MeshFlat;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.Distorted;
@@ -55,7 +56,7 @@ class EffectQueueRenderer implements GLSurfaceView.Renderer, EffectListener
   private DistortedTexture mTexture;
   private MeshFlat mMesh;
   private DistortedEffects mEffects;
-  private DistortedFramebuffer mScreen;
+  private DistortedScreen mScreen;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -77,7 +78,7 @@ class EffectQueueRenderer implements GLSurfaceView.Renderer, EffectListener
 
     mEffects.registerForMessages(this);
 
-    mScreen = new DistortedFramebuffer(0);
+    mScreen = new DistortedScreen();
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/effects3d/Effects3DRenderer.java b/src/main/java/org/distorted/examples/effects3d/Effects3DRenderer.java
index 659af28..c4ba7aa 100644
--- a/src/main/java/org/distorted/examples/effects3d/Effects3DRenderer.java
+++ b/src/main/java/org/distorted/examples/effects3d/Effects3DRenderer.java
@@ -28,6 +28,7 @@ import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.MeshFlat;
 import org.distorted.library.MeshObject;
@@ -50,7 +51,7 @@ class Effects3DRenderer implements GLSurfaceView.Renderer
     private GLSurfaceView mView;
     private DistortedTexture mObjectTexture, mBackgroundTexture, mCenterTexture, mRegionTexture;
     private DistortedEffects mObjectEffects, mBackgroundEffects, mCenterEffects, mRegionEffects;
-    private DistortedFramebuffer mScreen;
+    private DistortedScreen mScreen;
     private MeshFlat mQuad;
     private MeshObject mObjectMesh;
     private int mObjWidth, mObjHeight, mObjDepth;
@@ -110,7 +111,7 @@ class Effects3DRenderer implements GLSurfaceView.Renderer
       mRegionScalePoint = new Static3D(0,0,0);
       mRegionScaleInter.add(mRegionScalePoint);
 
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/fbo/FBORenderer.java b/src/main/java/org/distorted/examples/fbo/FBORenderer.java
index d9f3ee8..ecd102c 100644
--- a/src/main/java/org/distorted/examples/fbo/FBORenderer.java
+++ b/src/main/java/org/distorted/examples/fbo/FBORenderer.java
@@ -29,6 +29,7 @@ import org.distorted.examples.R;
 
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.DistortedTree;
 import org.distorted.library.Distorted;
 import org.distorted.library.MeshCubes;
@@ -51,7 +52,7 @@ class FBORenderer implements GLSurfaceView.Renderer
 {
    private GLSurfaceView mView;
    private DistortedEffects mEffects;
-   private DistortedFramebuffer mScreen;
+   private DistortedScreen mScreen;
    private DistortedTree mRoot;
    private int lisaHeight, lisaWidth;
 
@@ -61,7 +62,7 @@ class FBORenderer implements GLSurfaceView.Renderer
       {
       mView   = v;
       mEffects= new DistortedEffects();
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/flag/FlagRenderer.java b/src/main/java/org/distorted/examples/flag/FlagRenderer.java
index ae305b0..8ccf44b 100644
--- a/src/main/java/org/distorted/examples/flag/FlagRenderer.java
+++ b/src/main/java/org/distorted/examples/flag/FlagRenderer.java
@@ -28,6 +28,7 @@ import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.MeshCubes;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.EffectTypes;
@@ -51,7 +52,7 @@ class FlagRenderer implements GLSurfaceView.Renderer
     private GLSurfaceView mView;
     private DistortedEffects mEffects;
     private DistortedTexture mTexture;
-    private DistortedFramebuffer mScreen;
+    private DistortedScreen mScreen;
     private MeshCubes mMesh;
     private DynamicQuat mQuatInt1, mQuatInt2;
     private Dynamic5D mWaveDyn;
@@ -96,7 +97,7 @@ class FlagRenderer implements GLSurfaceView.Renderer
 
       mEffects.wave(mWaveDyn, waveCenter, waveRegion);
 
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/girl/GirlRenderer.java b/src/main/java/org/distorted/examples/girl/GirlRenderer.java
index bcf89d6..df34734 100644
--- a/src/main/java/org/distorted/examples/girl/GirlRenderer.java
+++ b/src/main/java/org/distorted/examples/girl/GirlRenderer.java
@@ -29,6 +29,7 @@ import org.distorted.examples.R;
 
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.MeshFlat;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.DistortedEffects;
@@ -51,7 +52,7 @@ class GirlRenderer implements GLSurfaceView.Renderer
     private GLSurfaceView mView;
     private DistortedTexture mTexture;
     private DistortedEffects mEffects;
-    private DistortedFramebuffer mScreen;
+    private DistortedScreen mScreen;
     private MeshFlat mMesh;
     private Static3D v0,v1,v2,v3;
     private Static1D dBegin, dMiddle, dEnd, s0;
@@ -121,7 +122,7 @@ class GirlRenderer implements GLSurfaceView.Renderer
 
       mEffects.swirl(diHips, pHips, HipsRegion );
 
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/listener/ListenerRenderer.java b/src/main/java/org/distorted/examples/listener/ListenerRenderer.java
index e565be4..6a7b271 100644
--- a/src/main/java/org/distorted/examples/listener/ListenerRenderer.java
+++ b/src/main/java/org/distorted/examples/listener/ListenerRenderer.java
@@ -30,6 +30,7 @@ import org.distorted.examples.R;
 
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.MeshFlat;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.DistortedEffects;
@@ -55,7 +56,7 @@ class ListenerRenderer implements GLSurfaceView.Renderer,EffectListener
    private GLSurfaceView mView;
    private DistortedTexture mTexture;
    private DistortedEffects mEffects;
-   private DistortedFramebuffer mScreen;
+   private DistortedScreen mScreen;
    private MeshFlat mMesh;
    private int bmpHeight, bmpWidth;
    private Random mRnd;
@@ -68,7 +69,7 @@ class ListenerRenderer implements GLSurfaceView.Renderer,EffectListener
       mView = v;
       mEffects = new DistortedEffects();
       mEffects.registerForMessages(this);
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       mRnd = new Random(0);
       }
 
diff --git a/src/main/java/org/distorted/examples/matrix3d/Matrix3DRenderer.java b/src/main/java/org/distorted/examples/matrix3d/Matrix3DRenderer.java
index 918c458..3c7e4be 100644
--- a/src/main/java/org/distorted/examples/matrix3d/Matrix3DRenderer.java
+++ b/src/main/java/org/distorted/examples/matrix3d/Matrix3DRenderer.java
@@ -25,6 +25,7 @@ import android.opengl.GLSurfaceView;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.MeshObject;
 import org.distorted.library.DistortedTexture;
 
@@ -38,7 +39,7 @@ class Matrix3DRenderer implements GLSurfaceView.Renderer
     private GLSurfaceView mView;
     private DistortedTexture mTexture;
     private DistortedEffects mEffects;
-    private DistortedFramebuffer mScreen;
+    private DistortedScreen mScreen;
     private MeshObject mMesh;
 
     private int mWidth, mHeight;
@@ -54,7 +55,7 @@ class Matrix3DRenderer implements GLSurfaceView.Renderer
       mEffects= act.getEffects();
       mTexture= act.getTexture();
       mMesh = act.getMesh();
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/mirror/MirrorRenderer.java b/src/main/java/org/distorted/examples/mirror/MirrorRenderer.java
index 9554d63..6ef57b8 100644
--- a/src/main/java/org/distorted/examples/mirror/MirrorRenderer.java
+++ b/src/main/java/org/distorted/examples/mirror/MirrorRenderer.java
@@ -28,6 +28,7 @@ import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.MeshFlat;
 import org.distorted.library.type.Dynamic3D;
@@ -55,7 +56,8 @@ class MirrorRenderer implements GLSurfaceView.Renderer
    private DistortedEffects mEffectsMirror, mEffectsHead, mEffectsNull;
    private DistortedEffects mEffectsOffscreen1, mEffectsOffscreen2;
    private DistortedTexture mTextureMirror, mTextureHead;
-   private DistortedFramebuffer mScreen, mOffScreen1, mOffScreen2;
+   private DistortedFramebuffer mOffScreen1, mOffScreen2;
+   private DistortedScreen mScreen;
    private MeshFlat mQuad;
    private Static3D mHeadPosition;
    private Dynamic3D mHeadDyn;
@@ -70,7 +72,7 @@ class MirrorRenderer implements GLSurfaceView.Renderer
       { 
       mView    = view;
       mQuad    = new MeshFlat(1,1);
-      mScreen  = new DistortedFramebuffer(0);
+      mScreen  = new DistortedScreen();
 
       mEffectsMirror    = new DistortedEffects();
       mEffectsHead      = new DistortedEffects();
diff --git a/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java b/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
index 8e3988b..d7e305f 100644
--- a/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
+++ b/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
@@ -29,6 +29,7 @@ import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.MeshFlat;
 import org.distorted.library.EffectTypes;
@@ -48,7 +49,7 @@ class MonaLisaRenderer implements GLSurfaceView.Renderer
     private GLSurfaceView mView;
     private DistortedTexture mTexture;
     private DistortedEffects mEffects;
-    private DistortedFramebuffer mScreen;
+    private DistortedScreen mScreen;
     private MeshFlat mMesh;
     private int bmpHeight, bmpWidth;
 
@@ -74,7 +75,7 @@ class MonaLisaRenderer implements GLSurfaceView.Renderer
       mEffects.distort( dLeft, pLeft , rLeft );
       mEffects.distort(dRight, pRight, rRight);
 
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/movingeffects/MovingEffectsRenderer.java b/src/main/java/org/distorted/examples/movingeffects/MovingEffectsRenderer.java
index 32a4438..07113d3 100644
--- a/src/main/java/org/distorted/examples/movingeffects/MovingEffectsRenderer.java
+++ b/src/main/java/org/distorted/examples/movingeffects/MovingEffectsRenderer.java
@@ -30,6 +30,7 @@ import android.opengl.GLES30;
 import android.opengl.GLSurfaceView;
 
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.MeshFlat;
@@ -48,7 +49,7 @@ class MovingEffectsRenderer implements GLSurfaceView.Renderer
    private MeshFlat mMesh;
    private DistortedEffects mEffects;
    private DistortedTexture mTexture;
-   private DistortedFramebuffer mScreen;
+   private DistortedScreen mScreen;
    private boolean mRefresh;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -62,7 +63,7 @@ class MovingEffectsRenderer implements GLSurfaceView.Renderer
 
      mView   = v;
      mEffects= new DistortedEffects();
-     mScreen = new DistortedFramebuffer(0);
+     mScreen = new DistortedScreen();
      mRefresh= true;
      }
 
diff --git a/src/main/java/org/distorted/examples/multiblur/MultiblurRenderer.java b/src/main/java/org/distorted/examples/multiblur/MultiblurRenderer.java
index f46a800..2861bae 100644
--- a/src/main/java/org/distorted/examples/multiblur/MultiblurRenderer.java
+++ b/src/main/java/org/distorted/examples/multiblur/MultiblurRenderer.java
@@ -28,6 +28,7 @@ import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.EffectTypes;
 import org.distorted.library.MeshCubes;
@@ -67,7 +68,7 @@ class MultiblurRenderer implements GLSurfaceView.Renderer
     private DistortedEffects[] mEffects;
     private Static3D[] mMoveVector;
     private MeshObject mMesh;
-    private DistortedFramebuffer mScreen;
+    private DistortedScreen mScreen;
     private DynamicQuat mQuatInt1, mQuatInt2;
 
     Static4D mQuat1, mQuat2;
@@ -101,7 +102,7 @@ class MultiblurRenderer implements GLSurfaceView.Renderer
       mQuatInt1.add(mQuat1);
       mQuatInt2.add(mQuat2);
 
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java b/src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java
index eabc5e7..79afa77 100644
--- a/src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java
+++ b/src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java
@@ -29,6 +29,7 @@ import org.distorted.examples.R;
 
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.DistortedTree;
 import org.distorted.library.EffectTypes;
 import org.distorted.library.MeshFlat;
@@ -54,7 +55,7 @@ class OlimpicRenderer implements GLSurfaceView.Renderer
    private GLSurfaceView mView;
    private DistortedTree mRoot;
    private DistortedTexture mLeaf;
-   private DistortedFramebuffer mScreen;
+   private DistortedScreen mScreen;
    private int mScreenW, mScreenH;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -112,7 +113,7 @@ class OlimpicRenderer implements GLSurfaceView.Renderer
         effects.chroma( new Static1D(0.5f), new Static3D(colors[3*i],colors[3*i+1], colors[3*i+2]) );
         }
 
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/plainmonalisa/RenderThread.java b/src/main/java/org/distorted/examples/plainmonalisa/RenderThread.java
index 5bba7e0..284c1c9 100644
--- a/src/main/java/org/distorted/examples/plainmonalisa/RenderThread.java
+++ b/src/main/java/org/distorted/examples/plainmonalisa/RenderThread.java
@@ -33,6 +33,7 @@ import android.view.SurfaceView;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.MeshFlat;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.EffectTypes;
@@ -64,7 +65,7 @@ class RenderThread extends Thread
 
   private DistortedTexture mTexture;
   private DistortedEffects mEffects;
-  private DistortedFramebuffer mScreen;
+  private DistortedScreen mScreen;
   private MeshFlat mMesh;
   private int bmpHeight, bmpWidth;
   private SurfaceView mView;
@@ -95,7 +96,7 @@ class RenderThread extends Thread
     mEffects.distort( dLeft, pLeft , rLeft );
     mEffects.distort(dRight, pRight, rRight);
 
-    mScreen = new DistortedFramebuffer(0);
+    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 a908c9e..66bba0f 100644
--- a/src/main/java/org/distorted/examples/projection/ProjectionRenderer.java
+++ b/src/main/java/org/distorted/examples/projection/ProjectionRenderer.java
@@ -25,6 +25,7 @@ import javax.microedition.khronos.opengles.GL10;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.MeshFlat;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.type.Static3D;
@@ -44,7 +45,7 @@ class ProjectionRenderer implements GLSurfaceView.Renderer
    private GLSurfaceView mView;
    private DistortedTexture mTexture;
    private DistortedEffects mEffects;
-   private DistortedFramebuffer mScreen;
+   private DistortedScreen mScreen;
    private MeshFlat mMesh;
 
    private float mF, mX, mY;
@@ -56,7 +57,7 @@ class ProjectionRenderer implements GLSurfaceView.Renderer
       { 
       mView   = view;
       mEffects= new DistortedEffects();
-      mScreen = new DistortedFramebuffer(0);
+      mScreen = new DistortedScreen();
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/quaternion/QuaternionRenderer.java b/src/main/java/org/distorted/examples/quaternion/QuaternionRenderer.java
index a32e570..76e2505 100644
--- a/src/main/java/org/distorted/examples/quaternion/QuaternionRenderer.java
+++ b/src/main/java/org/distorted/examples/quaternion/QuaternionRenderer.java
@@ -30,6 +30,7 @@ import org.distorted.examples.R;
 
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.EffectTypes;
 import org.distorted.library.type.Dynamic;
 import org.distorted.library.type.DynamicQuat;
@@ -53,7 +54,7 @@ class QuaternionRenderer implements GLSurfaceView.Renderer
   private GLSurfaceView mView;
   private DistortedTexture mTexture;
   private DistortedEffects mEffects;
-  private DistortedFramebuffer mScreen;
+  private DistortedScreen mScreen;
   private MeshCubes mMesh;
   private DynamicQuat mRot;
     
@@ -86,7 +87,7 @@ class QuaternionRenderer implements GLSurfaceView.Renderer
     mRot.setDuration(8000);
     mRot.setMode(Dynamic.MODE_LOOP);
 
-    mScreen = new DistortedFramebuffer(0);
+    mScreen = new DistortedScreen();
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/save/SaveRenderer.java b/src/main/java/org/distorted/examples/save/SaveRenderer.java
index dacc1af..4e96ca6 100644
--- a/src/main/java/org/distorted/examples/save/SaveRenderer.java
+++ b/src/main/java/org/distorted/examples/save/SaveRenderer.java
@@ -32,6 +32,7 @@ import org.distorted.examples.R;
 
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.MeshFlat;
 import org.distorted.library.DistortedFramebuffer;
@@ -56,7 +57,8 @@ class SaveRenderer implements GLSurfaceView.Renderer
   private DistortedTexture mTexture;
   private DistortedEffects mEffects;
   private MeshFlat mMesh;
-  private DistortedFramebuffer mScreen, mOffscreen;
+  private DistortedFramebuffer mOffscreen;
+  private DistortedScreen mScreen;
   private Static1D s0;
   private Dynamic3D mScaleDyn;
   private Static3D mScaleFactor;
@@ -95,7 +97,7 @@ class SaveRenderer implements GLSurfaceView.Renderer
     mEffects.sink( diSink, pLeft , sinkRegion);
     mEffects.sink( diSink, pRight, sinkRegion);
 
-    mScreen = new DistortedFramebuffer(0);
+    mScreen = new DistortedScreen();
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/sink/SinkRenderer.java b/src/main/java/org/distorted/examples/sink/SinkRenderer.java
index 048b61d..162142e 100644
--- a/src/main/java/org/distorted/examples/sink/SinkRenderer.java
+++ b/src/main/java/org/distorted/examples/sink/SinkRenderer.java
@@ -30,6 +30,7 @@ import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.MeshFlat;
 import org.distorted.library.DistortedTexture;
 import org.distorted.library.EffectTypes;
@@ -49,7 +50,7 @@ class SinkRenderer implements GLSurfaceView.Renderer
   private GLSurfaceView mView;
   private DistortedTexture mTexture;
   private DistortedEffects mEffects;
-  private DistortedFramebuffer mScreen;
+  private DistortedScreen mScreen;
   private MeshFlat mMesh;
   private int bmpHeight, bmpWidth;
     
@@ -66,7 +67,7 @@ class SinkRenderer implements GLSurfaceView.Renderer
     mEffects = new DistortedEffects();
     mEffects.sink( sink, new Static3D(297, 320, 0), null);
 
-    mScreen = new DistortedFramebuffer(0);
+    mScreen = new DistortedScreen();
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java b/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java
index 900f09d..cfbb085 100644
--- a/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java
+++ b/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java
@@ -29,6 +29,7 @@ import javax.microedition.khronos.opengles.GL10;
 import org.distorted.examples.R;
 
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.MeshFlat;
 import org.distorted.library.EffectNames;
 import org.distorted.library.type.Dynamic1D;
@@ -107,7 +108,7 @@ class StarWarsRenderer implements GLSurfaceView.Renderer, EffectListener
   private DistortedEffects mScreenEffects, mGFFAEffects, mLogoEffects, mCrawlEffects, mCrawlBackgroundEffects;
   private DistortedEffects[] mStarEffects;
   private DistortedTree mRoot, mBackground;
-  private DistortedFramebuffer mScreen;
+  private DistortedScreen mScreen;
   private MeshFlat mQuad;
 
   private long gffaID, logoID, crawlID;
@@ -133,7 +134,7 @@ class StarWarsRenderer implements GLSurfaceView.Renderer, EffectListener
 
     for(int i=1; i<NUM_STARS; i++) mStarEffects[i] = new DistortedEffects(mStarEffects[0],Distorted.CLONE_VERTEX);
 
-    mScreen = new DistortedFramebuffer(0);
+    mScreen = new DistortedScreen();
     mScreen.setProjection(60.0f, 0.0f, 0.0f);
     }
 
diff --git a/src/main/java/org/distorted/examples/wind/WindRenderer.java b/src/main/java/org/distorted/examples/wind/WindRenderer.java
index 2f127ae..6291002 100644
--- a/src/main/java/org/distorted/examples/wind/WindRenderer.java
+++ b/src/main/java/org/distorted/examples/wind/WindRenderer.java
@@ -27,6 +27,7 @@ import android.opengl.GLSurfaceView;
 import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedFramebuffer;
+import org.distorted.library.DistortedScreen;
 import org.distorted.library.MeshCubes;
 import org.distorted.library.DistortedEffects;
 import org.distorted.library.DistortedTexture;
@@ -46,7 +47,7 @@ class WindRenderer implements GLSurfaceView.Renderer
    private GLSurfaceView mView;
    private DistortedEffects mEffects;
    private DistortedTexture mTexture;
-   private DistortedFramebuffer mScreen;
+   private DistortedScreen mScreen;
    private MeshCubes mMesh;
    private WindEffectsManager mManager;
    private int mObjWidth, mObjHeight;
@@ -62,7 +63,7 @@ class WindRenderer implements GLSurfaceView.Renderer
       mEffects = new DistortedEffects();
       mTexture = new DistortedTexture(50,30);
       mManager = new WindEffectsManager(mTexture);
-      mScreen  = new DistortedFramebuffer(0);
+      mScreen  = new DistortedScreen();
 
       mObjWidth = mTexture.getWidth();
       mObjHeight= mTexture.getHeight();
