[DEV] work
This commit is contained in:
63
src/guis/GuiRenderer.java
Normal file
63
src/guis/GuiRenderer.java
Normal file
@@ -0,0 +1,63 @@
|
||||
package guis;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.atriaSoft.etk.math.Matrix4f;
|
||||
import org.atriaSoft.gale.backend3d.OpenGL;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GL13;
|
||||
import org.lwjgl.opengl.GL20;
|
||||
import org.lwjgl.opengl.GL30;
|
||||
|
||||
import models.RawModel;
|
||||
import renderEngine.Loader;
|
||||
import toolbox.Maths;
|
||||
|
||||
public class GuiRenderer {
|
||||
|
||||
private final RawModel 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();
|
||||
//System.out.println("Render Gui " + guis.size());
|
||||
GL30.glBindVertexArray(quad.getVaoID());
|
||||
GL20.glEnableVertexAttribArray(0);
|
||||
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
GL11.glDisable(GL11.GL_DEPTH_TEST);
|
||||
//OpenGL.enable(OpenGL.Flag.flag_blend);
|
||||
//GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
//OpenGL.enable(OpenGL.Flag.flag_cullFace);
|
||||
//OpenGL.enable(OpenGL.Flag.flag_back);
|
||||
for (GuiTexture gui: guis) {
|
||||
GL13.glActiveTexture(GL13.GL_TEXTURE0);
|
||||
GL11.glBindTexture(GL11.GL_TEXTURE_2D, gui.getTexture());
|
||||
Matrix4f matrix = Maths.createTransformationMatrix(gui.getPosition(), gui.getScale());
|
||||
shader.loadTransformation(matrix);
|
||||
OpenGL.updateAllFlags();
|
||||
GL11.glDrawArrays(GL11.GL_TRIANGLE_STRIP, 0, quad.getVertexCount());
|
||||
|
||||
}
|
||||
//OpenGL.disable(OpenGL.Flag.flag_blend);
|
||||
//OpenGL.disable(OpenGL.Flag.flag_cullFace);
|
||||
//OpenGL.disable(OpenGL.Flag.flag_back);
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||||
|
||||
GL20.glDisableVertexAttribArray(0);
|
||||
GL30.glBindVertexArray(0);
|
||||
shader.stop();
|
||||
}
|
||||
|
||||
public void cleanUp() {
|
||||
shader.cleanUp();
|
||||
}
|
||||
|
||||
}
|
37
src/guis/GuiShader.java
Normal file
37
src/guis/GuiShader.java
Normal file
@@ -0,0 +1,37 @@
|
||||
package guis;
|
||||
|
||||
import org.atriaSoft.etk.math.Matrix4f;
|
||||
import org.atriaSoft.gale.backend3d.OpenGL;
|
||||
|
||||
import shaders.ShaderProgram;
|
||||
|
||||
public class GuiShader extends ShaderProgram {
|
||||
|
||||
private static final String VERTEX_FILE = "src/guis/guiVertexShader.txt";
|
||||
private static final String FRAGMENT_FILE = "src/guis/guiFragmentShader.txt";
|
||||
|
||||
private int location_transformationMatrix;
|
||||
|
||||
public GuiShader() {
|
||||
super(VERTEX_FILE, FRAGMENT_FILE);
|
||||
}
|
||||
|
||||
public void loadTransformation(Matrix4f matrix){
|
||||
//super.loadMatrix(location_transformationMatrix, matrix);
|
||||
OpenGL.programLoadUniformMatrix(location_transformationMatrix, matrix);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void getAllUniformLocations() {
|
||||
location_transformationMatrix = super.getUniformLocation("transformationMatrix");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void bindAttributes() {
|
||||
super.bindAttribute(0, "position");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
33
src/guis/GuiTexture.java
Normal file
33
src/guis/GuiTexture.java
Normal file
@@ -0,0 +1,33 @@
|
||||
package guis;
|
||||
|
||||
import org.atriaSoft.etk.math.Vector2f;
|
||||
|
||||
public class GuiTexture {
|
||||
private int texture;
|
||||
private Vector2f position;
|
||||
private Vector2f scale;
|
||||
public GuiTexture(int texture, Vector2f position, Vector2f scale) {
|
||||
this.texture = texture;
|
||||
this.position = position;
|
||||
this.scale = scale;
|
||||
}
|
||||
public int getTexture() {
|
||||
return texture;
|
||||
}
|
||||
public void setTexture(int texture) {
|
||||
this.texture = texture;
|
||||
}
|
||||
public Vector2f getPosition() {
|
||||
return position;
|
||||
}
|
||||
public void setPosition(Vector2f position) {
|
||||
this.position = position;
|
||||
}
|
||||
public Vector2f getScale() {
|
||||
return scale;
|
||||
}
|
||||
public void setScale(Vector2f scale) {
|
||||
this.scale = scale;
|
||||
}
|
||||
|
||||
}
|
11
src/guis/guiFragmentShader.txt
Normal file
11
src/guis/guiFragmentShader.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
#version 400 core
|
||||
|
||||
in vec2 textureCoords;
|
||||
|
||||
out vec4 out_Color;
|
||||
|
||||
uniform sampler2D guiTexture;
|
||||
|
||||
void main(void){
|
||||
out_Color = texture(guiTexture,textureCoords);
|
||||
}
|
13
src/guis/guiVertexShader.txt
Normal file
13
src/guis/guiVertexShader.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
#version 400 core
|
||||
|
||||
in vec2 position;
|
||||
|
||||
out vec2 textureCoords;
|
||||
|
||||
uniform mat4 transformationMatrix;
|
||||
|
||||
void main(void){
|
||||
|
||||
gl_Position = transformationMatrix * vec4(position, 0.0, 1.0);
|
||||
textureCoords = vec2((position.x+1.0)/2.0, 1 - (position.y+1.0)/2.0);
|
||||
}
|
Reference in New Issue
Block a user