From f9c00ee3ab5e47a368eadbcdab7149ca8d20ea65 Mon Sep 17 00:00:00 2001 From: Richard Pajersky <xpajersk@fi.muni.cz> Date: Mon, 10 May 2021 09:39:38 +0200 Subject: [PATCH] Renders material instead of color --- .../analyst/gui/scene/SceneRenderer.java | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) 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 2049549b..176987cf 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 @@ -62,9 +62,7 @@ public class SceneRenderer { gl.glEnable(GL2.GL_NORMALIZE); gl.glDisable(GL2.GL_CULL_FACE); - //color enabled - gl.glEnable(GL2.GL_COLOR_MATERIAL); - gl.glEnable(GL2.GL_BLEND); + gl.glEnable(GL2.GL_BLEND); // enabled transparency gl.glBlendFunc(GL2.GL_SRC_ALPHA, GL2.GL_ONE_MINUS_SRC_ALPHA); } @@ -139,11 +137,7 @@ public class SceneRenderer { } for (DrawableMesh obj: drawables) { - // render color - Color color = obj.getColor(); - gl.glColor4d(color.getRed() / 255d, color.getGreen() / 255d, - color.getBlue() / 255d , obj.getTransparency()); - + setMaterial(obj); for (MeshFacet facet: obj.getFacets()) { // rotate gl.glPushMatrix(); @@ -161,6 +155,21 @@ public class SceneRenderer { gl.glFlush(); } + /** + * Sets up material based on DrawableMesh + */ + private void setMaterial(DrawableMesh obj) { + Color color = obj.getColor(); + float[] rgba = {color.getRed() / 255f, color.getGreen() / 255f, + color.getBlue() / 255f , obj.getTransparency()}; + gl.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_AMBIENT, rgba, 0); + gl.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_DIFFUSE, rgba, 0); + /*color = obj.getHighlights(); + float[] highlights = {color.getRed(), color.getGreen(), color.getBlue(), 1}; + gl.glMaterialf(GL2.GL_FRONT_AND_BACK, GL2.GL_SHININESS, 50); + gl.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_SPECULAR, highlights, 0);*/ + } + /** * Clears the scene and prepares it for the re-drawing. */ @@ -211,5 +220,4 @@ public class SceneRenderer { gl.glEnd(); } - } -- GitLab