From 2ee2a261a190325d587cb78e517907dcf552ccc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20GUEZO?= Date: Mon, 25 Mar 2024 21:41:56 +0100 Subject: [PATCH] add graphics buffers --- .gitignore | 3 ++- src/Main.class | Bin 1012 -> 0 bytes src/Main.java | 1 - src/graphics/EBO.java | 24 ++++++++++++++++++++++- src/graphics/VAO.java | 43 +++++++++++++++++++++++++++++++++++++++++- src/graphics/VBO.java | 25 +++++++++++++++++++++++- 6 files changed, 91 insertions(+), 5 deletions(-) delete mode 100644 src/Main.class 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 fb873830f34a3e3931af190ea99f8823eae23c8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1012 zcmZuw+fvg&82+{`rmca}7K(DP<)EghL_BK|fe6@6tISlv!K-cAmOz@+G^OA}_yD|s z*LtBHFMI%>#Yb?|e}ltehFoNK=RbUhfA{B~?>_)6A|FKnK?NZdJ-EQozr**qZgIP= zzpCtrs>g6)&a_Q$o*}4Z*P{p{q9Cf`B2f7wtHqTKhOpe{smQO{ zjGzxO1^p`GNSuKvAGAEtpe*6K41+}<+;sFc*R;K|=L+7)g)zV|ASsyKGCy$7bnFb} zJ8l#y3@Nyz;xdMb%Q@8yN>lc-Y-+C^_4mb5bJMQpq@X^Gsu;r+hLG5ooI_eZyBL;=hLID&EuXwz5)H>ac;lIt^kz!MRa_&H(gK47cw)n}x10_`TFd88 zF)+5dTNdxz!mf&3p^z=ea!o}R(+nwDUgEpLaBNTPdq&%Jh3#`INX|ELOTml^9kwPjdN zOGt|f*-ZrxDC3-Vv$Ij$$0HSwrK?KaGAzMqTw&x?%t?JQ*|*%`&82p&Cft^c&8v7O zuV9~ytvQypyhoB-3Kj{k#7!Du$Z)m@JytYr@v_~h2=_IwSdve}kEgVEryM?>F+*?J zzUS^7ddH3-li37XXtlg8oZ%8l#ob+B5wP>@#f`4EoD3 zkVFK}u}piJ`Vk6(v@Ud^93u7wy@}*k42HTGi3cGCGE^chlI(vv@ zd=Xtdq{EXgo__lKOQHmPlo@(!z#yTe=&}wWfnj7YiYcO{Ax)PcLw1jo+Y{vA6jmrZ Qj9}t7p{9t{s^96wKN1t_%K!iX 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); + } }