Organisation
This commit is contained in:
parent
5d93325b3d
commit
202c141e4d
@ -3,10 +3,12 @@ out vec4 FragColor;
|
|||||||
|
|
||||||
in vec3 ourColor;
|
in vec3 ourColor;
|
||||||
in vec2 TexCoord;
|
in vec2 TexCoord;
|
||||||
|
in vec4 position;
|
||||||
|
|
||||||
uniform sampler2D ourTexture;
|
uniform sampler2D texture1;
|
||||||
|
uniform sampler2D texture2;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
FragColor = texture(ourTexture, TexCoord) * vec4(ourColor, 1.0f);
|
FragColor = mix(texture(texture1, TexCoord), texture(texture2, vec2(TexCoord.x, -TexCoord.y)), position.x * position.y);
|
||||||
}
|
}
|
@ -5,10 +5,12 @@ layout (location = 2) in vec2 aTexCoord;
|
|||||||
|
|
||||||
out vec3 ourColor;
|
out vec3 ourColor;
|
||||||
out vec2 TexCoord;
|
out vec2 TexCoord;
|
||||||
|
out vec4 position;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
gl_Position = vec4(aPos, 1.0);
|
gl_Position = vec4(aPos, 1.0);
|
||||||
ourColor = aColor;
|
ourColor = aColor;
|
||||||
TexCoord = aTexCoord;
|
TexCoord = aTexCoord;
|
||||||
|
position = gl_Position;
|
||||||
}
|
}
|
@ -1,5 +1,7 @@
|
|||||||
package engine;
|
package engine;
|
||||||
|
|
||||||
|
import engine.math.Vector3f;
|
||||||
|
|
||||||
public class Primitive {
|
public class Primitive {
|
||||||
|
|
||||||
public float[] vertices;
|
public float[] vertices;
|
||||||
@ -74,10 +76,10 @@ public class Primitive {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public static float[] rectangle_texture = new float[]{
|
public static float[] rectangle_texture = new float[]{
|
||||||
1.0f, 1.0f,
|
2.0f, 2.0f,
|
||||||
1.0f, 0.0f,
|
2.0f, 0.0f,
|
||||||
0.0f, 0.0f,
|
0.0f, 0.0f,
|
||||||
0.0f, 1.0f
|
0.0f, 2.0f
|
||||||
};
|
};
|
||||||
|
|
||||||
public static byte[] rectangle_indices = new byte[] {
|
public static byte[] rectangle_indices = new byte[] {
|
||||||
|
@ -1,13 +1,17 @@
|
|||||||
package engine;
|
package engine;
|
||||||
|
|
||||||
import static org.lwjgl.opengl.GL11.*;
|
import engine.graphics.Shader;
|
||||||
|
import engine.graphics.Texture;
|
||||||
|
import engine.graphics.VertexArray;
|
||||||
|
|
||||||
public class Scene {
|
public class Scene {
|
||||||
|
|
||||||
float[] vertices;
|
float[] vertices;
|
||||||
float[] color;
|
float[] color;
|
||||||
float[] texture;
|
float[] texture;
|
||||||
|
float[] texture2;
|
||||||
Texture texture_map;
|
Texture texture_map;
|
||||||
|
Texture texture_map2;
|
||||||
byte[] indices;
|
byte[] indices;
|
||||||
|
|
||||||
VertexArray vertexArray;
|
VertexArray vertexArray;
|
||||||
@ -25,15 +29,21 @@ public class Scene {
|
|||||||
this.indices = indices;
|
this.indices = indices;
|
||||||
this.color = color;
|
this.color = color;
|
||||||
this.shader = new Shader(vertPath, fragPath);
|
this.shader = new Shader(vertPath, fragPath);
|
||||||
this.texture_map = new Texture("textures/container.jpg");
|
this.texture_map = new Texture("textures/container.jpg", 0);
|
||||||
this.texture = texture;
|
this.texture = texture;
|
||||||
|
this.texture_map2 = new Texture("textures/awesomeface.png", 1);
|
||||||
|
this.texture2 = texture;
|
||||||
this.vertexArray = new VertexArray(this.vertices, this.indices, this.color, this.texture);
|
this.vertexArray = new VertexArray(this.vertices, this.indices, this.color, this.texture);
|
||||||
|
shader.setUniform1i("texture1", 0);
|
||||||
|
shader.setUniform1i("texture2", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void render(){
|
public void render(){
|
||||||
this.shader.enable();
|
this.shader.enable();
|
||||||
this.texture_map.bind();
|
this.texture_map.bind();
|
||||||
|
this.texture_map2.bind();
|
||||||
this.vertexArray.render();
|
this.vertexArray.render();
|
||||||
|
this.texture_map2.unbind();
|
||||||
this.texture_map.unbind();
|
this.texture_map.unbind();
|
||||||
this.shader.disable();
|
this.shader.disable();
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
package engine;
|
package engine.graphics;
|
||||||
|
|
||||||
|
import engine.math.Matrix4f;
|
||||||
|
import engine.utils.ShaderUtils;
|
||||||
|
import engine.math.Vector3f;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
@ -1,4 +1,7 @@
|
|||||||
package engine;
|
package engine.graphics;
|
||||||
|
|
||||||
|
import engine.utils.BufferUtils;
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
@ -13,8 +16,10 @@ public class Texture {
|
|||||||
|
|
||||||
private int width, height;
|
private int width, height;
|
||||||
private int texture;
|
private int texture;
|
||||||
|
private int index;
|
||||||
|
|
||||||
public Texture(String path) {
|
public Texture(String path, int index) {
|
||||||
|
this.index = index;
|
||||||
texture = load(path);
|
texture = load(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,13 +49,14 @@ public class Texture {
|
|||||||
glBindTexture(GL_TEXTURE_2D, result);
|
glBindTexture(GL_TEXTURE_2D, result);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, BufferUtils.createIntBuffer(data));
|
GL11.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, BufferUtils.createIntBuffer(data));
|
||||||
glGenerateMipmap(GL_TEXTURE_2D);
|
glGenerateMipmap(GL_TEXTURE_2D);
|
||||||
glBindTexture(GL_TEXTURE_2D, 0);
|
glBindTexture(GL_TEXTURE_2D, 0);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void bind() {
|
public void bind() {
|
||||||
|
glActiveTexture(GL_TEXTURE0 + this.index);
|
||||||
glBindTexture(GL_TEXTURE_2D, texture);
|
glBindTexture(GL_TEXTURE_2D, texture);
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,7 @@
|
|||||||
package engine;
|
package engine.graphics;
|
||||||
|
|
||||||
|
import engine.utils.BufferUtils;
|
||||||
|
import org.lwjgl.opengl.GL15;
|
||||||
|
|
||||||
import static org.lwjgl.opengl.GL11.*;
|
import static org.lwjgl.opengl.GL11.*;
|
||||||
import static org.lwjgl.opengl.GL15.*;
|
import static org.lwjgl.opengl.GL15.*;
|
||||||
@ -20,7 +23,7 @@ public class VertexArray {
|
|||||||
|
|
||||||
EBO = glGenBuffers();
|
EBO = glGenBuffers();
|
||||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
|
||||||
glBufferData(GL_ELEMENT_ARRAY_BUFFER, BufferUtils.createByteBuffer(indices), GL_STATIC_DRAW);
|
GL15.glBufferData(GL_ELEMENT_ARRAY_BUFFER, BufferUtils.createByteBuffer(indices), GL_STATIC_DRAW);
|
||||||
|
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||||
glBindVertexArray(0);
|
glBindVertexArray(0);
|
@ -1,4 +1,6 @@
|
|||||||
package engine;
|
package engine.math;
|
||||||
|
|
||||||
|
import engine.utils.BufferUtils;
|
||||||
|
|
||||||
import java.nio.FloatBuffer;
|
import java.nio.FloatBuffer;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package engine;
|
package engine.math;
|
||||||
|
|
||||||
public class Vector3f {
|
public class Vector3f {
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package engine;
|
package engine.utils;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.ByteOrder;
|
import java.nio.ByteOrder;
|
@ -1,4 +1,4 @@
|
|||||||
package engine;
|
package engine.utils;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
@ -1,4 +1,6 @@
|
|||||||
package engine;
|
package engine.utils;
|
||||||
|
|
||||||
|
import engine.utils.FileUtils;
|
||||||
|
|
||||||
import static org.lwjgl.opengl.GL11.*;
|
import static org.lwjgl.opengl.GL11.*;
|
||||||
import static org.lwjgl.opengl.GL20.*;
|
import static org.lwjgl.opengl.GL20.*;
|
BIN
textures/awesomeface.png
Normal file
BIN
textures/awesomeface.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 40 KiB |
Loading…
x
Reference in New Issue
Block a user