diff --git a/.gitignore b/.gitignore index 496ee2c..b54392d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.DS_Store \ No newline at end of file +.DS_Store +*.class diff --git a/src/Main.class b/src/Main.class deleted file mode 100644 index fb87383..0000000 Binary files a/src/Main.class and /dev/null differ diff --git a/src/Main.java b/src/Main.java index ac2425e..519b83a 100644 --- a/src/Main.java +++ b/src/Main.java @@ -15,7 +15,6 @@ import static org.lwjgl.opengl.GL11.*; import static org.lwjgl.system.MemoryStack.*; import static org.lwjgl.system.MemoryUtil.*; - public class Main { public static void main(String[] args) { if(!GLFW.glfwInit()) { diff --git a/src/graphics/EBO.java b/src/graphics/EBO.java index d65caab..8691d88 100644 --- a/src/graphics/EBO.java +++ b/src/graphics/EBO.java @@ -1,5 +1,27 @@ package graphics; +import org.lwjgl.opengl.GL15; + public class EBO { - + private int id; + + public EBO(int[] indices) { + this.id = GL15.glGenBuffers(); + GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, this.id); + GL15.glBufferData(GL15.GL_ELEMENT_ARRAY_BUFFER, indices, GL15.GL_STATIC_DRAW); + bind(); + } + + public void cleanup() { + unbind(); + GL15.glDeleteBuffers(this.id); + } + + public void bind() { + GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, (int)this.id); + } + + public void unbind() { + GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0); + } } diff --git a/src/graphics/VAO.java b/src/graphics/VAO.java index 28e058f..ec8afec 100644 --- a/src/graphics/VAO.java +++ b/src/graphics/VAO.java @@ -1,5 +1,46 @@ package graphics; +import static org.lwjgl.opengl.GL11.glDrawArrays; +import static org.lwjgl.opengl.GL11.glDrawElements; + +import org.lwjgl.opengl.GL30; + public class VAO { - + private int id; + + public VAO() { + this.id = GL30.glGenVertexArrays(); + bind(); + } + + public void cleanup() { + unbind(); + GL30.glDeleteVertexArrays(id); + } + + public void bind() { + GL30.glBindVertexArray(this.id); + } + + public void unbind() { + GL30.glBindVertexArray(0); + } + + public void setAttributePointer(int index, int size, int type, int stride, long offset) { + GL30.glEnableVertexAttribArray(index); + GL30.glVertexAttribPointer(index, size, type, false, stride, offset); + } + + public void drawElement(int mode, int count, int type, long indices) { + bind(); + + glDrawElements(mode, count, type, indices); + unbind(); + } + + public void drawElementIndices(int mode, int first, int count) { + bind(); + glDrawArrays(mode, first, count); + unbind(); + } } diff --git a/src/graphics/VBO.java b/src/graphics/VBO.java index d8331e8..0b0ef65 100644 --- a/src/graphics/VBO.java +++ b/src/graphics/VBO.java @@ -1,5 +1,28 @@ package graphics; +import org.lwjgl.opengl.GL15; + public class VBO { - + private int id; + + public VBO(float[] vertices) { + this.id = GL15.glGenBuffers(); + GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, this.id); + GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vertices, GL15.GL_STATIC_DRAW); + + bind(); + } + + public void cleanup() { + unbind(); + GL15.glDeleteBuffers(this.id); + } + + public void bind() { + GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, this.id); + } + + public void unbind() { + GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0); + } }