From 40f18d912519ba02d009bf89619f020a67287c73 Mon Sep 17 00:00:00 2001 From: ChrisMickelson Date: Fri, 2 Feb 2018 04:49:32 -0600 Subject: [PATCH] Update RocketRenderer.java Fix depth test issues with transparent components --- .../gui/figure3d/RocketRenderer.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/figure3d/RocketRenderer.java b/swing/src/net/sf/openrocket/gui/figure3d/RocketRenderer.java index 6edc4fc9a..716900f56 100644 --- a/swing/src/net/sf/openrocket/gui/figure3d/RocketRenderer.java +++ b/swing/src/net/sf/openrocket/gui/figure3d/RocketRenderer.java @@ -197,17 +197,24 @@ public abstract class RocketRenderer { } private void renderTree( GL2 gl, final Collection geometryList){ + //cycle through opaque components first, then transparent to preserve proper depth testing for(Geometry geom: geometryList ) { - if( geom.active ) { - if( isDrawnTransparent( (RocketComponent)geom.obj) ){ - // Draw T&T front faces blended, without depth test - renderComponent(gl, geom, 0.2f); - }else{ - renderComponent(gl, geom, 1.0f); + if( geom.active ) { + //if not transparent + if( !isDrawnTransparent( (RocketComponent)geom.obj) ){ + renderComponent(gl, geom, 1.0f); + } + } + } + for(Geometry geom: geometryList ) { + if( geom.active ) { + if( isDrawnTransparent( (RocketComponent)geom.obj) ){ + // Draw T&T front faces blended, without depth test + renderComponent(gl, geom, 0.2f); + } } } } - } private void renderMotors(GL2 gl, FlightConfiguration configuration) { // FlightConfigurationId motorID = configuration.getFlightConfigurationID();