commit 8337fa415188c00633c397bc848025532c5c2ac6
Author: Leszek Koltunski <leszek@distorted.org>
Date:   Wed Jan 4 22:17:58 2017 +0000

    Fix issues with the DEPTH attachment to DistortedFramebuffer.

diff --git a/src/main/java/org/distorted/library/DistortedFramebuffer.java b/src/main/java/org/distorted/library/DistortedFramebuffer.java
index cc6ae28..b9812af 100644
--- a/src/main/java/org/distorted/library/DistortedFramebuffer.java
+++ b/src/main/java/org/distorted/library/DistortedFramebuffer.java
@@ -64,36 +64,25 @@ public class DistortedFramebuffer
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // Must be called from a thread holding OpenGL Context
 
-  boolean createFBO()
+  void createFBO()
     {
     if( colorIds[0]==NOT_CREATED_YET )
       {
       GLES20.glGenTextures(1, colorIds, 0);
       GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, colorIds[0]);
-      GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
-      GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
       GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_REPEAT);
       GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_REPEAT);
+      GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
+      GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
       GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, mWidth, mHeight, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, null);
 
       GLES20.glGenFramebuffers(1, fboIds, 0);
       GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, fboIds[0]);
       GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0, GLES20.GL_TEXTURE_2D, colorIds[0], 0);
 
-      int status = GLES20.glCheckFramebufferStatus(GLES20.GL_FRAMEBUFFER);
-
-      if(status != GLES20.GL_FRAMEBUFFER_COMPLETE)
-        {
-        android.util.Log.e("DistortedFramebuffer", "failed to create framebuffer, error="+status);
-        GLES20.glDeleteTextures(1, colorIds, 0);
-        GLES20.glDeleteFramebuffers(1, fboIds, 0);
-        fboIds[0]   = 0;
-        colorIds[0] = FAILED_TO_CREATE;
-        return false;
-        }
+      checkStatus("color");
 
       mList.add(this);
-      //android.util.Log.e("FBO", "created ("+mWidth+","+mHeight+") "+fboIds[0]);
       }
 
     if(  mDepthWanted && depthIds[0]==NOT_CREATED_YET ) // we need to create a new DEPTH attachment
@@ -104,28 +93,39 @@ public class DistortedFramebuffer
       GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_REPEAT);
       GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
       GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST);
-      GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_DEPTH_COMPONENT, mWidth, mHeight, 0, GLES20.GL_DEPTH_COMPONENT, GLES20.GL_FLOAT, null);
+      GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_DEPTH_COMPONENT, mWidth, mHeight, 0, GLES20.GL_DEPTH_COMPONENT, GLES20.GL_UNSIGNED_SHORT, null);
 
       GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, fboIds[0]);
       GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_DEPTH_ATTACHMENT, GLES20.GL_TEXTURE_2D, depthIds[0], 0);
 
-      int status = GLES20.glCheckFramebufferStatus(GLES20.GL_FRAMEBUFFER);
-
-      if(status != GLES20.GL_FRAMEBUFFER_COMPLETE)
-        {
-        android.util.Log.e("DistortedFramebuffer", "failed to create depth, error="+status);
-        GLES20.glDeleteTextures(1, colorIds, 0);
-        GLES20.glDeleteFramebuffers(1, fboIds, 0);
-        fboIds[0]   = 0;
-        depthIds[0] = FAILED_TO_CREATE;
-        return false;
-        }
+      checkStatus("depth");
       }
     if( !mDepthWanted && depthIds[0]!=NOT_CREATED_YET ) // we need to detach and destroy the DEPTH attachment.
       {
       GLES20.glDeleteTextures(1, depthIds, 0);
       depthIds[0]=NOT_CREATED_YET;
       }
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private boolean checkStatus(String message)
+    {
+    int status = GLES20.glCheckFramebufferStatus(GLES20.GL_FRAMEBUFFER);
+
+    if(status != GLES20.GL_FRAMEBUFFER_COMPLETE)
+      {
+      android.util.Log.e("DistortedFramebuffer", "FRAMEBUFFER INCOMPLETE, "+message+" error="+status);
+
+      GLES20.glDeleteTextures(1, colorIds, 0);
+      GLES20.glDeleteTextures(1, depthIds, 0);
+      GLES20.glDeleteFramebuffers(1, fboIds, 0);
+      fboIds[0]   = 0;
+      colorIds[0] = FAILED_TO_CREATE;
+      depthIds[0] = FAILED_TO_CREATE;
+
+      return false;
+      }
 
     return true;
     }
