private void selectionDraw(GL10 glUnused) {
    setFBO(glUnused, true);

    if (layers == null) {
      return;
    }
    synchronized (layers) {
      for (Layer layer : getLayers()) {
        if (layer.isEnabled() && (layer instanceof SelectableLayer)) {
          camera.pushM();
          if (layer instanceof TfLayer) {
            GraphName layerFrame = ((TfLayer) layer).getFrame();
            if (layerFrame != null) {
              Transform t =
                  Utility.newTransformIfPossible(
                      frameTransformTree, layerFrame, camera.getFixedFrame());
              camera.applyTransform(t);
            }
          }
          ((SelectableLayer) layer).selectionDraw(glUnused);
          camera.popM();
        }
      }
    }

    // is THIS your card?
    ByteBuffer colorBuf = ByteBuffer.allocateDirect(4).order(ByteOrder.nativeOrder());
    colorBuf.position(0);
    Point selected = camera.getSelectionManager().getSelectionCoordinates();
    selected.set(selected.x, (camera.getViewport().getHeight() - selected.y));
    GLES20.glReadPixels(
        selected.x, selected.y, 1, 1, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, colorBuf);
    colorBuf.position(0);
    Color selectedColor =
        new Color(
            (colorBuf.get() & 0xff) / 255f,
            (colorBuf.get() & 0xff) / 255f,
            (colorBuf.get() & 0xff) / 255f,
            1f);
    camera.getSelectionManager().selectItemWithColor(selectedColor);

    setFBO(glUnused, false);
  }
 private void drawLayers(GL10 glUnused) {
   if (layers == null) {
     return;
   }
   synchronized (layers) {
     for (Layer layer : getLayers()) {
       if (layer.isEnabled()) {
         camera.pushM();
         if (layer instanceof TfLayer) {
           GraphName layerFrame = ((TfLayer) layer).getFrame();
           if (layerFrame != null) {
             Transform t =
                 Utility.newTransformIfPossible(
                     frameTransformTree, layerFrame, camera.getFixedFrame());
             camera.applyTransform(t);
           }
         }
         layer.draw(glUnused);
         camera.popM();
       }
     }
   }
 }