commit 227ac49abe23c0ed423c08c88ab5597aeab44dd9
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Wed Feb 8 15:20:03 2017 +0000

    progress with DistortedRenderable

diff --git a/src/main/java/org/distorted/library/DistortedFramebuffer.java b/src/main/java/org/distorted/library/DistortedFramebuffer.java
index bbe1fe4..071a9c6 100644
--- a/src/main/java/org/distorted/library/DistortedFramebuffer.java
+++ b/src/main/java/org/distorted/library/DistortedFramebuffer.java
@@ -58,6 +58,7 @@ public class DistortedFramebuffer extends DistortedRenderable
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // Must be called from a thread holding OpenGL Context
+// Watch out - this has the side-effect of binding a Texture and a Framebuffer!
 
   void create()
     {
@@ -125,7 +126,7 @@ public class DistortedFramebuffer extends DistortedRenderable
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // Must be called from a thread holding OpenGL Context
 
-  private void delete()
+  void delete()
     {
     if( mColorH[0]>=0 )
       {
@@ -368,47 +369,21 @@ public class DistortedFramebuffer extends DistortedRenderable
  * <p>
  * Must be called from a thread holding OpenGL Context.
  *
- * @param tex input Texture to use.
+ * @param ren input Renderable to use.
  * @param mesh Class descendant from MeshObject
  * @param effects The DistortedEffects to use when rendering
  * @param time Current time, in milliseconds.
  */
-  public void renderTo(DistortedTexture tex, MeshObject mesh, DistortedEffects effects, long time)
+  public void renderTo(DistortedRenderable ren, MeshObject mesh, DistortedEffects effects, long time)
     {
-    tex.create();
+    ren.create();  // Watch out  - this needs to be before
+    create();      // the 'setAsInput' because this has side-effects!
 
-    if( tex.setAsInput() )
+    if( ren.setAsInput() )
       {
       DistortedFramebuffer.deleteAllMarked();
       DistortedTexture.deleteAllMarked();
-      create();
-      effects.drawPriv(tex.getWidth()/2.0f, tex.getHeight()/2.0f, mesh, this, time);
-      }
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-/**
- * Draw the (framebuffer,mesh,effects) object to the Framebuffer.
- * <p>
- * Must be called from a thread holding OpenGL Context.
- *
- * @param fbo The Framebuffer (previously created with the first constructor, drawing FROM the screen
- *            is unsupported!) whose COLOR attachment 0 will be used as input texture.
- *            Please note that rendering from an FBO to itself is unsupported by OpenGL!
- * @param mesh Class descendant from MeshObject
- * @param effects The DistortedEffects to use when rendering
- * @param time Current time, in milliseconds.
- */
-  public void renderTo(DistortedFramebuffer fbo, MeshObject mesh, DistortedEffects effects, long time)
-    {
-    fbo.create();
-
-    if( fbo.setAsInput() )
-      {
-      DistortedFramebuffer.deleteAllMarked();
-      DistortedTexture.deleteAllMarked();
-      create();
-      effects.drawPriv(fbo.getWidth()/2.0f, fbo.getHeight()/2.0f, mesh, this, time);
+      effects.drawPriv(ren.getWidth()/2.0f, ren.getHeight()/2.0f, mesh, this, time);
       }
     }
 
@@ -435,8 +410,6 @@ public class DistortedFramebuffer extends DistortedRenderable
  */
   public void markForDeletion()
     {
-    //android.util.Log.e("FBO", "marking for deletion ("+mWidth+","+mHeight+") "+mFBOH[0]);
-
     mListMarked = true;
     mMarked     = true;
     }
diff --git a/src/main/java/org/distorted/library/DistortedRenderable.java b/src/main/java/org/distorted/library/DistortedRenderable.java
index 19aeee0..d5ad7be 100644
--- a/src/main/java/org/distorted/library/DistortedRenderable.java
+++ b/src/main/java/org/distorted/library/DistortedRenderable.java
@@ -32,6 +32,11 @@ abstract class DistortedRenderable
   int[] mColorH = new int[1];
   int mSizeX, mSizeY;  // in screen space
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  abstract void create();
+  abstract void delete();
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   long getID()
diff --git a/src/main/java/org/distorted/library/DistortedTexture.java b/src/main/java/org/distorted/library/DistortedTexture.java
index 331fc37..869a194 100644
--- a/src/main/java/org/distorted/library/DistortedTexture.java
+++ b/src/main/java/org/distorted/library/DistortedTexture.java
@@ -97,7 +97,7 @@ public class DistortedTexture extends DistortedRenderable
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // must be called from a thread holding OpenGL Context
 
-  private void delete()
+  void delete()
     {
     if( mColorH !=null && mColorH[0]>0 )
       {
