Tankernn 8 жил өмнө
parent
commit
c14f7be6df

+ 49 - 44
src/main/java/eu/tankernn/gameEngine/renderEngine/gui/GuiRenderer.java

@@ -1,44 +1,49 @@
-package eu.tankernn.gameEngine.renderEngine.gui;
-
-import java.util.List;
-
-import org.lwjgl.opengl.GL11;
-import org.lwjgl.util.vector.Matrix4f;
-
-import eu.tankernn.gameEngine.loader.Loader;
-import eu.tankernn.gameEngine.renderEngine.Vao;
-import eu.tankernn.gameEngine.util.Maths;
-
-public class GuiRenderer {
-	
-	private final Vao quad;
-	private GuiShader shader;
-	
-	public GuiRenderer(Loader loader) {
-		float[] positions = {-1, 1, -1, -1, 1, 1, 1, -1};
-		quad = loader.loadToVAO(positions, 2);
-		shader = new GuiShader();
-	}
-	
-	public void render(List<GuiTexture> guis) {
-		shader.start();
-		quad.bind(0);
-		GL11.glEnable(GL11.GL_BLEND);
-		GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
-		GL11.glDisable(GL11.GL_DEPTH_TEST);
-		for (GuiTexture gui : guis) {
-			gui.getTexture().bindToUnit(0);
-			Matrix4f matrix = Maths.createTransformationMatrix(gui.getPosition(), gui.getSize());
-			shader.transformationMatrix.loadMatrix(matrix);
-			GL11.glDrawArrays(GL11.GL_TRIANGLE_STRIP, 0, quad.getIndexCount());
-		}
-		GL11.glEnable(GL11.GL_DEPTH_TEST);
-		GL11.glDisable(GL11.GL_BLEND);
-		quad.unbind(0);
-		shader.stop();
-	}
-	
-	public void finalize() {
-		shader.finalize();
-	}
-}
+package eu.tankernn.gameEngine.renderEngine.gui;
+
+import java.util.List;
+
+import org.lwjgl.opengl.GL11;
+import org.lwjgl.util.vector.Matrix4f;
+
+import eu.tankernn.gameEngine.loader.Loader;
+import eu.tankernn.gameEngine.renderEngine.Vao;
+import eu.tankernn.gameEngine.util.Maths;
+
+public class GuiRenderer {
+	
+	private final Vao quad;
+	private GuiShader shader;
+	
+	public GuiRenderer(Loader loader) {
+		float[] positions = {-1, 1, -1, -1, 1, 1, 1, -1};
+		quad = loader.loadToVAO(positions, 2);
+		shader = new GuiShader();
+	}
+	
+	public void render(List<GuiTexture> guis) {
+		shader.start();
+		quad.bind(0);
+		GL11.glEnable(GL11.GL_BLEND);
+		GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
+		GL11.glDisable(GL11.GL_DEPTH_TEST);
+		for (GuiTexture gui : guis) {
+			if (gui.isAdditive()) {
+				GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
+			} else {
+				GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
+			}
+			gui.getTexture().bindToUnit(0);
+			Matrix4f matrix = Maths.createTransformationMatrix(gui.getPosition(), gui.getSize());
+			shader.transformationMatrix.loadMatrix(matrix);
+			GL11.glDrawArrays(GL11.GL_TRIANGLE_STRIP, 0, quad.getIndexCount());
+		}
+		GL11.glEnable(GL11.GL_DEPTH_TEST);
+		GL11.glDisable(GL11.GL_BLEND);
+		quad.unbind(0);
+		shader.stop();
+	}
+	
+	public void finalize() {
+		shader.finalize();
+	}
+}

+ 9 - 0
src/main/java/eu/tankernn/gameEngine/renderEngine/gui/GuiTexture.java

@@ -9,6 +9,7 @@ public class GuiTexture {
 	private Texture texture;
 	protected Vector2f position;
 	protected float scale;
+	private boolean additive;
 	
 	public GuiTexture(Texture texture, Vector2f position, float scale) {
 		this.texture = texture;
@@ -35,5 +36,13 @@ public class GuiTexture {
 	public void setScale(float scale) {
 		this.scale = scale;
 	}
+
+	public boolean isAdditive() {
+		return additive;
+	}
+
+	public void setAdditive(boolean additive) {
+		this.additive = additive;
+	}
 	
 }