commit 8ac0ed3e8b448cf56ba686174ae10fa57b456e9d
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Jun 29 00:21:19 2018 +0100

    Correct the way we delay FBOs in DistortedScreen.

diff --git a/src/main/java/org/distorted/library/main/DistortedScreen.java b/src/main/java/org/distorted/library/main/DistortedScreen.java
index f25cf41..7adeff9 100644
--- a/src/main/java/org/distorted/library/main/DistortedScreen.java
+++ b/src/main/java/org/distorted/library/main/DistortedScreen.java
@@ -55,7 +55,9 @@ public class DistortedScreen extends DistortedFramebuffer
   private static MatrixEffectMove mMoveEffect = new MatrixEffectMove( new Static3D(5,5,0) );
   ///// END DEBUGGING //////////////////////////
 
-  private int mCurrFBO, mLastFBO;
+  private int mCurRenderedFBO;    // During the first FBO_QUEUE_SIZE frames, we blit the very first
+  private int mToBeBlittedFBO;    // FBO one we have rendered. Then, we keep blitting the one we
+  private boolean mFirstCircle;   // rendered FBO_QUEUE_SIZE ago.
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // PUBLIC API
@@ -69,8 +71,9 @@ public class DistortedScreen extends DistortedFramebuffer
     {
     super(Distorted.FBO_QUEUE_SIZE,1,BOTH_DEPTH_STENCIL, TYPE_SYST, 1,1);
     mShowFPS = false;
-    mCurrFBO = 0;
-    mLastFBO = 1;
+    mCurRenderedFBO = 0;
+    mToBeBlittedFBO = 0;
+    mFirstCircle = true;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -84,9 +87,6 @@ public class DistortedScreen extends DistortedFramebuffer
  */
   public int render(long time)
     {
-    if( ++mCurrFBO>=Distorted.FBO_QUEUE_SIZE ) mCurrFBO=0;
-    if( ++mLastFBO>=Distorted.FBO_QUEUE_SIZE ) mLastFBO=0;
-
     if( mShowFPS )
       {
       if( lastTime==0 ) lastTime = time;
@@ -107,7 +107,7 @@ public class DistortedScreen extends DistortedFramebuffer
       lastTime = time;
       }
 
-    int numrender = super.render(time,mCurrFBO);
+    int numrender = super.render(time,mCurRenderedFBO);
 
     GLES31.glBindFramebuffer(GLES31.GL_FRAMEBUFFER, 0);
 
@@ -116,7 +116,7 @@ public class DistortedScreen extends DistortedFramebuffer
     // make it equal to 3.
     // This of course introduces a delay and uses more memory, but it does not appear to have any effect
     // on speed. Maybe a slight positive effect if any!
-    setAsInput(mLastFBO,0);
+    setAsInput(mToBeBlittedFBO,0);
 
     GLES31.glColorMask(true,true,true,true);
     GLES31.glDepthMask(false);
@@ -131,6 +131,16 @@ public class DistortedScreen extends DistortedFramebuffer
       fpsEffects.drawPriv(fpsW / 2.0f, fpsH / 2.0f, fpsMesh, this, time, 0);
       }
 
+    if( ++mCurRenderedFBO>=Distorted.FBO_QUEUE_SIZE )
+      {
+      mCurRenderedFBO = 0;
+      if (mFirstCircle) mFirstCircle = false;
+      }
+    if( !mFirstCircle && ++mToBeBlittedFBO>=Distorted.FBO_QUEUE_SIZE )
+      {
+      mToBeBlittedFBO=0;
+      }
+
     return numrender+1;
     }
 
