commit eb6bccbd49d7727b9859a306149e01e7a72f1704
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Wed Mar 30 01:23:58 2022 +0200

    Create the bandaged 3x3 icon: something works, the shape is drawn, but it's entirely black. Investigate.

diff --git a/src/main/java/org/distorted/bandaged/BandagedCreatorRenderer.java b/src/main/java/org/distorted/bandaged/BandagedCreatorRenderer.java
index 13bc25ca..a5b29b2e 100644
--- a/src/main/java/org/distorted/bandaged/BandagedCreatorRenderer.java
+++ b/src/main/java/org/distorted/bandaged/BandagedCreatorRenderer.java
@@ -110,6 +110,8 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
    private DistortedFramebuffer mFramebuffer;
    private String mPath;
 
+private int sW, sH;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
    BandagedCreatorRenderer(BandagedCreatorView v)
@@ -231,8 +233,16 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
        if( done ) mResettingObject = false;
        }
 
-     if( mSaveIcon>=0 ) mSaveIcon++;
-     if( mSaveIcon>=2 ) { saveIcon(time); mSaveIcon = -1; }
+     if( mSaveIcon>=0 )
+       {
+       if( mSaveIcon==0 ) renderIcon(time);
+       mSaveIcon++;
+       }
+     if( mSaveIcon>=2 )
+       {
+       saveIcon();
+       mSaveIcon = -1;
+       }
      }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -255,6 +265,9 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
           mScreen.attach(node);
           }
 
+sW = width;
+sH = height;
+
       mScale.set( mScaleValue,mScaleValue,mScaleValue );
       mView.setScreenSize(width,height);
       mScreen.resize(width,height);
@@ -432,15 +445,16 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
 
    private void setupIconCreation(Activity act)
      {
+     TwistyObject object = new TwistyBandagedGeneric(ShapeHexahedron.DEFAULT_ROT, 0.9f, TwistyObject.MODE_ICON);
+     DistortedEffects effects = object.getObjectEffects();
+     DistortedNode node = object.getNode();
+
      if( mFramebuffer==null )
        {
-       mFramebuffer = new DistortedFramebuffer(FBO_SIZE,FBO_SIZE,1, InternalOutputSurface.DEPTH_NO_STENCIL);
+       mFramebuffer = new DistortedFramebuffer(sW,sH,1, InternalOutputSurface.DEPTH_NO_STENCIL);
+       mFramebuffer.glClearColor(BRIGHTNESS, BRIGHTNESS, 0.0f, 1.0f);
        }
 
-     TwistyObject object = new TwistyBandagedGeneric(ShapeHexahedron.DEFAULT_ROT, 1.15f, TwistyObject.MODE_ICON);
-     DistortedEffects effects = object.getObjectEffects();
-     DistortedNode node = object.getNode();
-
      mFramebuffer.detachAll();
      mFramebuffer.attach(node);
 
@@ -460,29 +474,29 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-    private void saveIcon(long time)
-      {
-      mFramebuffer.render(time);
-      int fW = mFramebuffer.getWidth();
-      int fH = mFramebuffer.getHeight();
-      ByteBuffer buf = ByteBuffer.allocateDirect(fW*fH*4);
-      buf.order(ByteOrder.LITTLE_ENDIAN);
+   private void renderIcon(long time)
+     {
+     mFramebuffer.render(time);
+     }
 
-      int textureID = mFramebuffer.getTextureID();
+///////////////////////////////////////////////////////////////////////////////////////////////////
 
-      if( textureID>=0 )
-        {
-        GLES31.glBindTexture(GLES31.GL_TEXTURE_2D, textureID);
-        GLES31.glReadPixels( 0, 0, fW, fH, GLES31.GL_RGBA, GLES31.GL_UNSIGNED_BYTE, buf);
-        BandagedCreatorWorkerThread.newBuffer(buf,fW,fH,6,mPath);
-        }
-      else
-        {
-        android.util.Log.e("Save", "Error trying to read from offscreen FBO, textureID="+textureID);
-        }
+   private void saveIcon()
+     {
+     int fW = mFramebuffer.getWidth();
+     int fH = mFramebuffer.getHeight();
 
-      mSaveIcon = -1;
-      }
+     ByteBuffer buf = ByteBuffer.allocateDirect(fW*fH*4);
+     buf.order(ByteOrder.LITTLE_ENDIAN);
+
+     mFramebuffer.setAsReadFramebuffer(0);
+     GLES31.glReadBuffer(GLES31.GL_COLOR_ATTACHMENT0);
+     GLES31.glReadPixels( 0, 0, fW, fH, GLES31.GL_RGBA, GLES31.GL_UNSIGNED_BYTE, buf);
+     BandagedCreatorWorkerThread.newBuffer(buf,fW,fH,6,mPath);
+     GLES31.glBindFramebuffer(GLES31.GL_READ_FRAMEBUFFER, 0);
+
+     mSaveIcon = -1;
+     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
diff --git a/src/main/java/org/distorted/bandaged/BandagedCreatorWorkerThread.java b/src/main/java/org/distorted/bandaged/BandagedCreatorWorkerThread.java
index eb6ec5df..8e03c9d1 100644
--- a/src/main/java/org/distorted/bandaged/BandagedCreatorWorkerThread.java
+++ b/src/main/java/org/distorted/bandaged/BandagedCreatorWorkerThread.java
@@ -295,7 +295,7 @@ class BandagedCreatorWorkerThread extends Thread
 
     byte[] tmp = new byte[4*width];
     ByteBuffer bufSquare = adjustBuffer(load.buffer,tmp,width,height);
-    ByteBuffer bufTransp = replaceColors(bufSquare,tmp,width,load.numColors);
+   // ByteBuffer bufTransp = replaceColors(bufSquare,tmp,width,load.numColors);
 
     final String filename = load.filename;
     BufferedOutputStream bos =null;
@@ -305,7 +305,7 @@ class BandagedCreatorWorkerThread extends Thread
       {
       bos = new BufferedOutputStream(new FileOutputStream(filename));
       Bitmap bmp = Bitmap.createBitmap( width, width, Bitmap.Config.ARGB_8888);
-      bmp.copyPixelsFromBuffer(bufTransp);
+      bmp.copyPixelsFromBuffer(bufSquare);
       bmp.compress(Bitmap.CompressFormat.PNG, 90, bos);
 
       BandagedCreatorActivity cact = (BandagedCreatorActivity)act;
