commit 1746198f1c2bc43c617eda5983e14deda2f6a520
Author: Leszek Koltunski <leszek@distorted.org>
Date:   Wed Jan 4 23:28:47 2017 +0000

    FBO APP: add dynamic adding/removing the DEPTH attachment.

diff --git a/src/main/java/org/distorted/examples/fbo/FBOActivity.java b/src/main/java/org/distorted/examples/fbo/FBOActivity.java
index d02fc00..be6d88a 100644
--- a/src/main/java/org/distorted/examples/fbo/FBOActivity.java
+++ b/src/main/java/org/distorted/examples/fbo/FBOActivity.java
@@ -19,25 +19,24 @@
 
 package org.distorted.examples.fbo;
 
+import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 
 import android.app.Activity;
 import android.os.Bundle;
+import android.view.View;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 public class FBOActivity extends Activity 
 {
-    private FBOSurfaceView mView;
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
     
     @Override
     protected void onCreate(Bundle icicle) 
       {
       super.onCreate(icicle);
-      mView = new FBOSurfaceView(this);
-      setContentView(mView);
+      setContentView(R.layout.fbolayout);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -45,7 +44,9 @@ public class FBOActivity extends Activity
     @Override
     protected void onPause() 
       {
-      mView.onPause();  
+      FBOSurfaceView view = (FBOSurfaceView) this.findViewById(R.id.fboSurfaceView);
+
+      view.onPause();
       super.onPause();
       }
 
@@ -54,8 +55,10 @@ public class FBOActivity extends Activity
     @Override
     protected void onResume() 
       {
+      FBOSurfaceView view = (FBOSurfaceView) this.findViewById(R.id.fboSurfaceView);
+
       super.onResume();
-      mView.onResume();
+      view.onResume();
       }
     
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -66,5 +69,24 @@ public class FBOActivity extends Activity
       Distorted.onDestroy();  
       super.onDestroy();
       }
-    
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    public void DepthYes(View v)
+      {
+      FBOSurfaceView view = (FBOSurfaceView) this.findViewById(R.id.fboSurfaceView);
+      FBORenderer renderer = view.getRenderer();
+
+      renderer.setDepth(true);
+      }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    public void DepthNo(View v)
+      {
+      FBOSurfaceView view = (FBOSurfaceView) this.findViewById(R.id.fboSurfaceView);
+      FBORenderer renderer = view.getRenderer();
+
+      renderer.setDepth(false);
+      }
 }
diff --git a/src/main/java/org/distorted/examples/fbo/FBORenderer.java b/src/main/java/org/distorted/examples/fbo/FBORenderer.java
index 9031fdd..d594ee2 100644
--- a/src/main/java/org/distorted/examples/fbo/FBORenderer.java
+++ b/src/main/java/org/distorted/examples/fbo/FBORenderer.java
@@ -64,9 +64,20 @@ class FBORenderer implements GLSurfaceView.Renderer
       mScreen = new DistortedFramebuffer(0);
       }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+   void setDepth(boolean depth)
+      {
+      if( mRoot!=null )
+        {
+        DistortedFramebuffer tmp = mRoot.getFramebuffer();
+        tmp.setDepthAttachment(depth);
+        }
+      }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
    
-    public void onDrawFrame(GL10 glUnused) 
+   public void onDrawFrame(GL10 glUnused)
       {
       GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
       mScreen.renderTo(mRoot,System.currentTimeMillis());
@@ -74,7 +85,7 @@ class FBORenderer implements GLSurfaceView.Renderer
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
     
-    public void onSurfaceChanged(GL10 glUnused, int width, int height) 
+   public void onSurfaceChanged(GL10 glUnused, int width, int height)
       { 
       mEffects.abortEffects(EffectTypes.MATRIX);
          
@@ -100,7 +111,7 @@ class FBORenderer implements GLSurfaceView.Renderer
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
     
-    public void onSurfaceCreated(GL10 glUnused, EGLConfig config) 
+   public void onSurfaceCreated(GL10 glUnused, EGLConfig config)
       {
       GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
 
@@ -140,9 +151,6 @@ class FBORenderer implements GLSurfaceView.Renderer
       mRoot = new DistortedTree(lisa, mEffects,new MeshFlat(1,1));
       mRoot.attach(grid,gridEffects,new MeshCubes(10,10,false));
 
-      DistortedFramebuffer tmp = mRoot.getFramebuffer();
-      tmp.setDepthAttachment(true);
-
       float factor = lisaWidth/(2.0f*gridWidth);
 
       gridEffects.move( new Static3D( (lisaWidth-factor*gridWidth)/2,(lisaHeight-factor*gridHeight)/2,0) );
diff --git a/src/main/java/org/distorted/examples/fbo/FBOSurfaceView.java b/src/main/java/org/distorted/examples/fbo/FBOSurfaceView.java
index 9446fff..f59e820 100644
--- a/src/main/java/org/distorted/examples/fbo/FBOSurfaceView.java
+++ b/src/main/java/org/distorted/examples/fbo/FBOSurfaceView.java
@@ -21,18 +21,33 @@ package org.distorted.examples.fbo;
 
 import android.content.Context;
 import android.opengl.GLSurfaceView;
+import android.util.AttributeSet;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 class FBOSurfaceView extends GLSurfaceView 
 {
+    private FBORenderer mRenderer;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
    
-    public FBOSurfaceView(Context context) 
+    public FBOSurfaceView(Context c, AttributeSet attrs)
+      {
+      super(c, attrs);
+
+      if(!isInEditMode())
+        {
+        setEGLContextClientVersion(2);
+        mRenderer = new FBORenderer(this);
+        setRenderer(mRenderer);
+        }
+      }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    public FBORenderer getRenderer()
       {
-      super(context);
-      setEGLContextClientVersion(2);
-      setRenderer(new FBORenderer(this));
+      return mRenderer;
       }
 }
 
diff --git a/src/main/res/layout/fbolayout.xml b/src/main/res/layout/fbolayout.xml
new file mode 100644
index 0000000..d22a68c
--- /dev/null
+++ b/src/main/res/layout/fbolayout.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="vertical" >
+
+    <org.distorted.examples.fbo.FBOSurfaceView
+        android:id="@+id/fboSurfaceView"
+        android:layout_width="fill_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1" />
+
+    <LinearLayout
+        android:id="@+id/linearLayout1"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center|fill_horizontal"
+        android:orientation="vertical" >
+
+        <RadioGroup
+            android:id="@+id/radioGroup1"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal" >
+			
+            <RadioButton
+                android:id="@+id/deformDistortButton"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:onClick="DepthYes"
+                android:text="@string/DepthYes" />
+
+            <RadioButton
+                android:id="@+id/deformDeformButton"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:checked="true"
+                android:onClick="DepthNo"
+                android:text="@string/DepthNo" />
+
+        </RadioGroup>
+
+    </LinearLayout>
+
+</LinearLayout>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 357c6d0..4bb5092 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -57,6 +57,8 @@
     <string name="length">Length</string>
     <string name="angleA">Alpha</string>
     <string name="angleB">Beta</string>
+    <string name="DepthYes">Depth</string>
+    <string name="DepthNo">No Depth</string>
 
     <string name="radius_placeholder">Radius: %1$s</string>
     <string name="noise_placeholder">Noise %1$s</string>
