ObjectGl, ObjectGlColor, ObjectGlTex added

This commit is contained in:
Antoine 2021-05-18 21:18:26 +02:00
parent b7de1556cc
commit c6181c96fe
13 changed files with 110 additions and 64 deletions

View File

@ -0,0 +1,8 @@
#version 330 core
out vec4 FragColor;
void main()
{
FragColor = vec4(1.0f, 1.0f, 1.0f, 1.0f);
}

View File

@ -0,0 +1,8 @@
#version 330 core
layout (location = 0) in vec3 aPos;
void main()
{
gl_Position = vec4(aPos, 1.0);
}

View File

@ -0,0 +1,10 @@
#version 330 core
in vec3 Color;
out vec4 FragColor;
void main()
{
FragColor = vec4(Color, 1.0f);
}

View File

@ -1,12 +1,12 @@
#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aColor;
out vec4 position;
out vec4 Color;
out vec3 Color;
void main()
{
gl_Position = vec4(aPos, 1.0);
Color = vec4(aColor, 1.0f);
Color = aColor;
}

View File

@ -0,0 +1,10 @@
#version 330 core
in vec3 Color;
out vec4 FragColor;
void main()
{
FragColor = vec4(Color, 1.0f);
}

View File

@ -0,0 +1,12 @@
#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aColor;
out vec3 Color;
void main()
{
gl_Position = vec4(aPos, 1.0);
Color = aColor;
}

View File

@ -1,10 +0,0 @@
#version 330 core
out vec4 FragColor;
in vec4 position;
in vec4 Color;
void main()
{
FragColor = Color;
}

View File

@ -31,6 +31,15 @@ public class Primitive {
};
}
public static float[] createRectangle(float x, float y, float z, float w, float h){
return new float[] {
x , y , z,
x + h, y , z,
x + h, y + w, z,
x , y + w, z
};
}
public static float[] triangle = new float[] {
0.0f, 0.5f, 0.0f,
0.5f, -0.5f, 0.0f,

View File

@ -25,7 +25,7 @@ public class Scene {
this.vertices = vertices;
this.indices = indices;
this.shader = new Shader(vertPath, fragPath);
this.vertexArray = new VertexArray(this.vertices, this.indices);
this.vertexArray = new VertexArray(this.vertices, this.indices, null, null);
}
public Scene(String vertPath, String fragPath, float[] vertices, byte[] indices, float[] color, float[] texture){

View File

@ -1,7 +1,6 @@
package engine.graphics;
import engine.utils.BufferUtils;
import org.lwjgl.opengl.GL15;
import static org.lwjgl.opengl.GL11.*;
import static org.lwjgl.opengl.GL15.*;
@ -12,46 +11,6 @@ public class VertexArray {
private int VAO ,VBO, EBO, CBO, TBO;
private int count;
public VertexArray(float[] vertices, byte[] indices){
count = indices.length;
// VERTEX ARRAY OBJECT
VAO = glGenVertexArrays();
glBindVertexArray(VAO);
// VERTEX BUFFER OBJECT
createVertexBufferObject(vertices);
EBO = glGenBuffers();
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
GL15.glBufferData(GL_ELEMENT_ARRAY_BUFFER, BufferUtils.createByteBuffer(indices), GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindVertexArray(0);
}
public VertexArray(float[] vertices, byte[] indices, float[] color) {
count = indices.length;
// VERTEX ARRAY OBJECT
VAO = glGenVertexArrays();
glBindVertexArray(VAO);
glEnableVertexAttribArray(0);
// VERTEX BUFFER OBJECT
createVertexBufferObject(vertices);
// COLOR BUFFER OBJECT
createColorBufferObject(color);
EBO = glGenBuffers();
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, BufferUtils.createByteBuffer(indices), GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindVertexArray(0);
}
public VertexArray(float[] vertices, byte[] indices, float[] color, float[] texture) {
count = indices.length;
// VERTEX ARRAY OBJECT
@ -63,9 +22,9 @@ public class VertexArray {
// VERTEX BUFFER OBJECT
createVertexBufferObject(vertices);
// COLOR BUFFER OBJECT
createColorBufferObject(color);
if (color != null) createColorBufferObject(color);
// TEXTURE BUFFER OBJECT
createTextureBufferObject(texture);
if (texture != null) createTextureBufferObject(texture);
EBO = glGenBuffers();
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);

View File

@ -1,19 +1,24 @@
package engine;
package engine.object;
import engine.Primitive;
import engine.graphics.VertexArray;
import engine.graphics.Shader;
import engine.math.Matrix4f;
import engine.math.Vector3f;
/**
*
*/
public class ObjectGl {
private VertexArray vertexArray;
private Shader shader;
private Matrix4f transform;
protected VertexArray vertexArray;
protected Shader shader;
protected Matrix4f transform;
public ObjectGl(float x, float y, float h, float w){
// TODO Create a rectangle
public ObjectGl(float x, float y, float z, float h, float w){
this.vertexArray = new VertexArray(Primitive.createRectangle(x, y, z, h, w), Primitive.rectangle_indices, null, null);
this.transform = Matrix4f.identity();
this.shader = new Shader("shaders/ObjectGl/vert.glsl","shaders/ObjectGl/frag.glsl");
}
public void resetTransform(){
@ -46,5 +51,4 @@ public class ObjectGl {
this.shader.disable();
}
}

View File

@ -0,0 +1,18 @@
package engine.object;
import engine.graphics.Shader;
public class ObjectGlColor extends ObjectGl{
public ObjectGlColor(float x, float y, float h, float w, float[] color) {
super(x, y, h, w);
this.shader = new Shader("shaders/ObjectGlColor/vert.glsl","shaders/ObjectGlColor/frag.glsl");
}
@Override
public void render() {
this.shader.enable();
this.vertexArray.render();
this.shader.disable();
}
}

View File

@ -0,0 +1,18 @@
package engine.object;
import engine.graphics.Shader;
public class ObjectGlTex extends ObjectGl{
public ObjectGlTex(float x, float y, float h, float w, float[] texCoord) {
super(x, y, h, w);
this.shader = new Shader("shaders/ObjectGlTex/vert.glsl","shaders/ObjectGlTex/frag.glsl");
}
@Override
public void render() {
this.shader.enable();
this.vertexArray.render();
this.shader.disable();
}
}