diff --git a/src/Test.java b/src/Test.java index 757a0fe..1c153f3 100644 --- a/src/Test.java +++ b/src/Test.java @@ -1,7 +1,10 @@ -import org.hl.engine.graphics.*; +import org.hl.engine.graphics.Mesh; +import org.hl.engine.graphics.Renderer; +import org.hl.engine.graphics.Shader; +import org.hl.engine.graphics.Vertex; import org.hl.engine.io.Display; import org.hl.engine.io.Input; -import org.hl.engine.math.lalg.*; +import org.hl.engine.math.Vector3f; import org.lwjgl.glfw.GLFW; @@ -15,16 +18,16 @@ public class Test { public Shader shader; public Mesh mesh = new Mesh(new Vertex[] { - new Vertex(new Vector3f(-0.5F, 0.5F, 0.0F), new Vector3f(0, 0, 1.0F), new Vector2f(0, 0)), - new Vertex(new Vector3f(-0.5F, -0.5F, 0.0F), new Vector3f(0, 0, 1.0F), new Vector2f(0, 1)), - new Vertex(new Vector3f(0.5F, -0.5F, 0.0F), new Vector3f(1.0F, 0, 1.0F), new Vector2f(1, 1)), - new Vertex(new Vector3f(0.5F, 0.5F, 0.0F), new Vector3f(1.0F, 0, 1.0F), new Vector2f(1, 0)), + new Vertex(new Vector3f(-0.5F, 0.5F, 0.0F), new Vector3f(0, 0, 1.0F)), + new Vertex(new Vector3f(-0.5F, -0.5F, 0.0F), new Vector3f(0, 0, 1.0F)), + new Vertex(new Vector3f(0.5F, -0.5F, 0.0F), new Vector3f(1.0F, 0, 1.0F)), + new Vertex(new Vector3f(0.5F, 0.5F, 0.0F), new Vector3f(1.0F, 0, 1.0F) ), }, new int[] { 0, 1, 2, 0, 2, 3 - }, new Material("/textures/beautiful.png")); + }); public void run() { init(); diff --git a/src/org/hl/engine/graphics/Material.java b/src/org/hl/engine/graphics/Material.java index 3cfbd8b..becaef4 100644 --- a/src/org/hl/engine/graphics/Material.java +++ b/src/org/hl/engine/graphics/Material.java @@ -14,16 +14,13 @@ public class Material { private int width, height; private int textureID; - private String path; public Material(String path) { - this.path = path; + this.image = TextureLoader.loadImage(path); //The path is inside the jar file } public void create() { - // Loading image on create - this.image = TextureLoader.loadImage(path); //The path is inside the jar file this.width = this.image.getWidth(); this.height = this.image.getHeight(); this.textureID = TextureLoader.loadTexture(image); diff --git a/src/org/hl/engine/graphics/Mesh.java b/src/org/hl/engine/graphics/Mesh.java index f59c735..b6d6194 100644 --- a/src/org/hl/engine/graphics/Mesh.java +++ b/src/org/hl/engine/graphics/Mesh.java @@ -12,14 +12,12 @@ import java.nio.IntBuffer; public class Mesh { private Vertex[] vertices; private int[] indices; - private Material material; - private int vertexArrayObject, positionBufferObject, indicesBufferObject, colorBufferObject, textureBufferObject; + private int vertexArrayObject, positionBufferObject, indicesBufferObject, colorBufferObject; // A group of vertices combined based on the indexes - public Mesh(Vertex[] vertices, int[] indices, Material material) { + public Mesh(Vertex[] vertices, int[] indices) { this.vertices = vertices; this.indices = indices; - this.material = material; } // Destroy the mesh @@ -27,8 +25,6 @@ public class Mesh { GL15.glDeleteBuffers(positionBufferObject); GL15.glDeleteBuffers(indicesBufferObject); GL15.glDeleteBuffers(colorBufferObject); - GL15.glDeleteBuffers(textureBufferObject); - material.destroy(); GL30.glDeleteVertexArrays(vertexArrayObject); } @@ -59,19 +55,8 @@ public class Mesh { return colorBufferObject; } - public int getTextureBufferObject() { - return textureBufferObject; - } - - public Material getMaterial() { - return material; - } - public void create() { - // Create the material - material.create(); - // Creates the mesh by formatting the vertices and indices and inputting them to OpenGL vertexArrayObject = GL30.glGenVertexArrays(); GL30.glBindVertexArray(vertexArrayObject); @@ -103,16 +88,6 @@ public class Mesh { colorBufferObject = storeData(colorBuffer, 1, 3); - FloatBuffer textureBuffer = MemoryUtil.memAllocFloat(vertices.length * 2); - float[] textureData = new float[vertices.length * 3]; - for (int i = 0; i < vertices.length; i ++ ) { - textureData[i * 2] = vertices[i].getTextureCoordinates().getX(); - textureData[i * 2 + 1] = vertices[i].getTextureCoordinates().getY(); - } - textureBuffer.put(colorData).flip(); - - textureBufferObject = storeData(textureBuffer, 2, 2); - IntBuffer indicesBuffer = MemoryUtil.memAllocInt(indices.length); indicesBuffer.put(indices).flip(); diff --git a/src/org/hl/engine/graphics/Renderer.java b/src/org/hl/engine/graphics/Renderer.java index b0e7e31..17f7c53 100644 --- a/src/org/hl/engine/graphics/Renderer.java +++ b/src/org/hl/engine/graphics/Renderer.java @@ -1,7 +1,6 @@ package org.hl.engine.graphics; import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL13; import org.lwjgl.opengl.GL15; import org.lwjgl.opengl.GL30; @@ -20,10 +19,8 @@ public class Renderer { GL30.glBindVertexArray(mesh.getVertexArrayObject()); GL30.glEnableVertexAttribArray(0); GL30.glEnableVertexAttribArray(1); - GL30.glEnableVertexAttribArray(2); GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, mesh.getIndicesBufferObject()); - GL13.glActiveTexture(GL13.GL_TEXTURE0); - GL13.glBindTexture(GL11.GL_TEXTURE_2D, mesh.getMaterial().getTextureID()); + shader.bind(); GL11.glDrawElements(GL11.GL_TRIANGLES, mesh.getIndices().length, GL11.GL_UNSIGNED_INT, 0); @@ -31,7 +28,6 @@ public class Renderer { shader.unbind(); GL30.glDisableVertexAttribArray(0); GL30.glDisableVertexAttribArray(1); - GL30.glDisableVertexAttribArray(2); GL30.glBindVertexArray(0); } diff --git a/src/org/hl/engine/graphics/Vertex.java b/src/org/hl/engine/graphics/Vertex.java index 3d81c3c..5e2df5b 100644 --- a/src/org/hl/engine/graphics/Vertex.java +++ b/src/org/hl/engine/graphics/Vertex.java @@ -1,7 +1,6 @@ package org.hl.engine.graphics; -import org.hl.engine.math.lalg.Vector2f; -import org.hl.engine.math.lalg.Vector3f; +import org.hl.engine.math.Vector3f; public class Vertex { @@ -9,22 +8,16 @@ public class Vertex { private Vector3f position; private Vector3f color; - private Vector2f textureCoordinates; - public Vertex (Vector3f position, Vector3f color, Vector2f textureCoordinates) { + public Vertex (Vector3f position, Vector3f color) { this.position = position; this.color = color; - this.textureCoordinates = textureCoordinates; } public Vector3f getPosition() { return position; } - public Vector2f getTextureCoordinates() { - return textureCoordinates; - } - public Vector3f getColor() { return color; } diff --git a/src/org/hl/engine/io/Display.java b/src/org/hl/engine/io/Display.java index d9126f7..0c0c5ec 100644 --- a/src/org/hl/engine/io/Display.java +++ b/src/org/hl/engine/io/Display.java @@ -1,5 +1,5 @@ package org.hl.engine.io; -import org.hl.engine.math.lalg.Vector3f; +import org.hl.engine.math.Vector3f; import org.lwjgl.glfw.GLFWVidMode; import org.lwjgl.glfw.GLFWWindowSizeCallback; import org.lwjgl.opengl.GL; @@ -102,8 +102,8 @@ public class Display { System.exit(1); } - glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); - glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL11.GL_TRUE); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); diff --git a/src/org/hl/engine/math/lalg/Vector3f.java b/src/org/hl/engine/math/Vector3f.java similarity index 95% rename from src/org/hl/engine/math/lalg/Vector3f.java rename to src/org/hl/engine/math/Vector3f.java index b2a87f0..fa1da5e 100644 --- a/src/org/hl/engine/math/lalg/Vector3f.java +++ b/src/org/hl/engine/math/Vector3f.java @@ -1,4 +1,4 @@ -package org.hl.engine.math.lalg; +package org.hl.engine.math; public class Vector3f { private float x; diff --git a/src/org/hl/engine/math/lalg/Vector2f.java b/src/org/hl/engine/math/lalg/Vector2f.java deleted file mode 100644 index 7b385cd..0000000 --- a/src/org/hl/engine/math/lalg/Vector2f.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.hl.engine.math.lalg; - -public class Vector2f { - private float x, y; - - // Just a vector if you know what I mean - public Vector2f (float x, float y) { - this.x = x; - this.y = y; - } - - public float getX() { - return x; - } - - public void setX(float x) { - this.x = x; - } - - public float getY() { - return y; - } - - public void setY(float y) { - this.y = y; - } - - public void setVector(float x, float y) { - this.x = x; - this.y = y; - } -} diff --git a/src/org/hl/engine/utils/TextureLoader.java b/src/org/hl/engine/utils/TextureLoader.java index 32ce01f..7f3e0b7 100644 --- a/src/org/hl/engine/utils/TextureLoader.java +++ b/src/org/hl/engine/utils/TextureLoader.java @@ -1,5 +1,6 @@ package org.hl.engine.utils; +// Original TextureLoader by Krythic (replaces SlickUtils texture loader) import java.awt.image.BufferedImage; import java.io.IOException; diff --git a/src/resources/shaders/mainFragment.glsl b/src/resources/shaders/mainFragment.glsl index 647b0dc..85d4098 100644 --- a/src/resources/shaders/mainFragment.glsl +++ b/src/resources/shaders/mainFragment.glsl @@ -1,12 +1,9 @@ -#version 460 core +#version 330 core in vec3 passColor; -in vec3 passTextureCoord; out vec4 outColor; -uniform sampler2D tex; - void main() { - outColor = texture(tex, passTextureCoord); + outColor = vec4(passColor, 1.0); } diff --git a/src/resources/shaders/mainVertex.glsl b/src/resources/shaders/mainVertex.glsl index 78ba706..9ae1698 100644 --- a/src/resources/shaders/mainVertex.glsl +++ b/src/resources/shaders/mainVertex.glsl @@ -1,14 +1,11 @@ -#version 460 core +#version 330 core -in vec3 position; -in vec3 color; -in vec2 textureCoordinates; +layout(location = 0) in vec3 position; +layout(location = 1) in vec3 color; out vec3 passColor; -out vec2 passTextureCoord; void main() { gl_Position = vec4(position, 1.0); passColor = color; - passTextureCoord = textureCoordinates; } \ No newline at end of file diff --git a/src/resources/textures/beautiful.png b/src/resources/textures/beautiful.png deleted file mode 100644 index ffe963e..0000000 Binary files a/src/resources/textures/beautiful.png and /dev/null differ