diff --git a/src/main/java/org/hirw/game/Shader.java b/src/main/java/org/hirw/game/Shader.java index 76e1872..85a715a 100644 --- a/src/main/java/org/hirw/game/Shader.java +++ b/src/main/java/org/hirw/game/Shader.java @@ -39,6 +39,7 @@ public class Shader { @Getter @Setter private int vertexID; @Getter @Setter private int fragmentID; @Getter @Setter private int shaderProgramID; + @Getter @Setter private int vaoID, vboID, eboID; private float[] vertexArray = { 0.5f, -0.5f, 0.0f, /* */ 1.0f, 0.0f, 0.0f, 1.0f, // @@ -52,8 +53,6 @@ public class Shader { 0, 1, 3 }; - @Getter private int vaoID, vboID, eboID; - public Shader(String fragPath, String vertPath) { this.fragmentSource = readFromFile(fragPath); this.vertexSource = readFromFile(vertPath); @@ -97,21 +96,23 @@ public class Shader { } private void createProgram() { - setShaderProgramID(glCreateProgram()); - glAttachShader(shaderProgramID, getVertexID()); - glAttachShader(shaderProgramID, getFragmentID()); - glLinkProgram(shaderProgramID); + int id = glCreateProgram(); + glAttachShader(id, getVertexID()); + glAttachShader(id, getFragmentID()); + glLinkProgram(id); - int success = glGetProgrami(getShaderProgramID(), GL_LINK_STATUS); + int success = glGetProgrami(id, GL_LINK_STATUS); if (success == GL_FALSE) { - int len = glGetProgrami(getShaderProgramID(), GL_INFO_LOG_LENGTH); + int len = glGetProgrami(id, GL_INFO_LOG_LENGTH); Log.error( "Shader initialisation", - String.format( - "Failed to create Shader Program: %s", - glGetShaderInfoLog(getShaderProgramID(), len))); + String.format("Failed to create Shader Program: %s", glGetShaderInfoLog(id, len))); + } else { + Log.success("Shader initialisation", "Shader Program created."); } + + setShaderProgramID(id); } private String readFromFile(String stringFilePath) { @@ -134,21 +135,21 @@ public class Shader { } private void thingy() { - this.vaoID = glGenVertexArrays(); - glBindVertexArray(this.vaoID); + setVaoID(glGenVertexArrays()); + glBindVertexArray(getVaoID()); FloatBuffer vertexBuffer = BufferUtils.createFloatBuffer(this.vertexArray.length); vertexBuffer.put(this.vertexArray).flip(); - this.vboID = glGenBuffers(); - glBindBuffer(GL_ARRAY_BUFFER, this.vboID); + setVboID(glGenBuffers()); + glBindBuffer(GL_ARRAY_BUFFER, getVboID()); glBufferData(GL_ARRAY_BUFFER, vertexBuffer, GL_STATIC_DRAW); IntBuffer elementBuffer = BufferUtils.createIntBuffer(this.elementArray.length); elementBuffer.put(this.elementArray).flip(); - this.eboID = glGenBuffers(); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, this.eboID); + setEboID(glGenBuffers()); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, getEboID()); glBufferData(GL_ELEMENT_ARRAY_BUFFER, elementBuffer, GL_STATIC_DRAW); int positionsSize = 3; @@ -163,9 +164,17 @@ public class Shader { glEnableVertexAttribArray(1); } + public void use() { + glUseProgram(getShaderProgramID()); + } + + public void detach() { + glUseProgram(0); + } + public void update() { - glUseProgram(this.shaderProgramID); - glBindVertexArray(this.vaoID); + glUseProgram(getShaderProgramID()); + glBindVertexArray(getVaoID()); glEnableVertexAttribArray(0); glEnableVertexAttribArray(1); glDrawElements(GL_TRIANGLES, this.elementArray.length, GL_UNSIGNED_INT, 0); diff --git a/src/main/java/org/hirw/game/util/Log.java b/src/main/java/org/hirw/game/util/Log.java index 3800893..b6f61dd 100644 --- a/src/main/java/org/hirw/game/util/Log.java +++ b/src/main/java/org/hirw/game/util/Log.java @@ -25,6 +25,13 @@ public final class Log { System.err.println(fancyError + fancyErrorStage + errorDescription); } + public static void success(String successStage, String successDescription) { + String fancySuccess = String.format("[%s] ", colourisedString(Colours.GREEN, "SUCCESS")); + String fancySucessStage = + colourisedString(Colours.YELLOW, String.format("<%s> ", successStage)); + System.out.println(fancySuccess + fancySucessStage + successDescription); + } + private static String colourisedString(String colour, String string) { return colour + string + Colours.ANSI_RESET; }