From 7317d4c7ee7aae726b5c97d80d52256a8bde2ade Mon Sep 17 00:00:00 2001
From: Richard Pajersky <xpajersk@fi.muni.cz>
Date: Mon, 10 May 2021 09:31:54 +0200
Subject: [PATCH] Fixed transparency rendering, by reversing rendering order

---
 .../fidentis/analyst/gui/RegistrationCPEventListener.java   | 1 +
 .../java/cz/fidentis/analyst/gui/scene/SceneRenderer.java   | 6 +++++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/RegistrationCPEventListener.java b/GUI/src/main/java/cz/fidentis/analyst/gui/RegistrationCPEventListener.java
index da67bddd..35a9793b 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/gui/RegistrationCPEventListener.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/gui/RegistrationCPEventListener.java
@@ -10,6 +10,7 @@ import cz.fidentis.analyst.gui.scene.DrawableMesh;
 import cz.fidentis.analyst.visitors.mesh.BoundingBox;
 import java.awt.Color;
 import java.util.ArrayList;
+import java.util.Collections;
 import javax.vecmath.Point3d;
 import javax.vecmath.Vector3d;
 
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/scene/SceneRenderer.java b/GUI/src/main/java/cz/fidentis/analyst/gui/scene/SceneRenderer.java
index eeede157..2049549b 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/gui/scene/SceneRenderer.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/gui/scene/SceneRenderer.java
@@ -11,6 +11,7 @@ import cz.fidentis.analyst.mesh.core.MeshFacet;
 import java.awt.Color;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import javax.vecmath.Point3d;
 import javax.vecmath.Point4f;
@@ -133,6 +134,10 @@ public class SceneRenderer {
             gl.glPolygonMode( GL_FRONT_AND_BACK, GL_FILL);
         }
         
+        if (((DrawableMesh)drawables.toArray()[0]).getTransparency() != 1) {
+            Collections.reverse((ArrayList)drawables);
+        }
+        
         for (DrawableMesh obj: drawables) {
             // render color
             Color color = obj.getColor();
@@ -140,7 +145,6 @@ public class SceneRenderer {
                     color.getBlue() / 255d , obj.getTransparency());
 
             for (MeshFacet facet: obj.getFacets()) {
-                // TO DO - R. Pajersky: add transformation (glPushMatrix, glRotate, ...)
                 // rotate
                 gl.glPushMatrix();
                 gl.glRotated(obj.getRotation().x, 1, 0, 0);
-- 
GitLab