commit d582c1167c80a5ef58447d268a53b911d13e2ad9
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Mon Feb 27 12:15:55 2017 +0000

    Bug fix in RenderState.

diff --git a/src/main/java/org/distorted/library/DistortedRenderState.java b/src/main/java/org/distorted/library/DistortedRenderState.java
index b73b0c3..6590c78 100644
--- a/src/main/java/org/distorted/library/DistortedRenderState.java
+++ b/src/main/java/org/distorted/library/DistortedRenderState.java
@@ -109,6 +109,8 @@ class DistortedRenderState
 
   void apply()
     {
+    // 1. Write to color buffer?
+
     if( mColorMaskR!=sColorMaskR || mColorMaskG!=sColorMaskG || mColorMaskB!=sColorMaskB || mColorMaskA!=sColorMaskA)
       {
       sColorMaskR = mColorMaskR;
@@ -118,20 +120,17 @@ class DistortedRenderState
       GLES30.glColorMask(sColorMaskR==1,sColorMaskG==1,sColorMaskB==1,sColorMaskA==1);
       }
 
+    // 2. Enable Depth test?
+
     if( mDepthTest!=sDepthTest )
       {
       sDepthTest = mDepthTest;
+
       if( sDepthTest==0 ) GLES30.glDisable(GLES30.GL_DEPTH_TEST);
       else
         {
         GLES30.glEnable (GLES30.GL_DEPTH_TEST);
 
-        if( mDepthMask!=sDepthMask )
-          {
-          sDepthMask = mDepthMask;
-          GLES30.glDepthMask(sDepthMask==1);
-          }
-
         if( mDepthFunc!=sDepthFunc )
           {
           sDepthFunc = mDepthFunc;
@@ -140,9 +139,20 @@ class DistortedRenderState
         }
       }
 
+    // 3. Write to Depth buffer?
+
+    if( mDepthMask!=sDepthMask )
+      {
+      sDepthMask = mDepthMask;
+      GLES30.glDepthMask(sDepthMask==1);
+      }
+
+    // 4. Enable Blending?
+
     if( mBlend!=sBlend )
       {
       sBlend = mBlend;
+
       if( sBlend==0 ) GLES30.glDisable(GLES30.GL_BLEND);
       else
         {
@@ -157,20 +167,17 @@ class DistortedRenderState
         }
       }
 
+    // 5. Enable Stencil Test?
+
     if( mStencilTest!=sStencilTest )
       {
       sStencilTest = mStencilTest;
+
       if( sStencilTest==0 ) GLES30.glDisable(GLES30.GL_STENCIL_TEST);
       else
         {
         GLES30.glEnable(GLES30.GL_STENCIL_TEST);
 
-        if( mStencilMask!=sStencilMask )
-          {
-          sStencilMask = mStencilMask;
-          GLES30.glStencilMask(sStencilMask);
-          }
-
         if( mStencilFuncFunc!=sStencilFuncFunc || mStencilFuncRef!=sStencilFuncRef || mStencilFuncMask!=sStencilFuncMask )
           {
           sStencilFuncFunc = mStencilFuncFunc;
@@ -188,6 +195,14 @@ class DistortedRenderState
           }
         }
       }
+
+    // 6. Write to Stencil buffer?
+
+    if( mStencilMask!=sStencilMask )
+      {
+      sStencilMask = mStencilMask;
+      GLES30.glStencilMask(sStencilMask);
+      }
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
