Orthographic camera, viewpoint, correct aspect ratio
This commit is contained in:
parent
57b6be084d
commit
e9935403b6
@ -2,9 +2,11 @@
|
||||
|
||||
layout (location = 0) in vec3 aPos;
|
||||
|
||||
uniform mat4 projection;
|
||||
uniform mat4 view;
|
||||
uniform mat4 transform;
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = transform * vec4(aPos, 1.0);
|
||||
gl_Position = projection * view * transform * vec4(aPos, 1.0);
|
||||
}
|
@ -5,10 +5,12 @@ layout (location = 1) in vec3 aColor;
|
||||
|
||||
out vec3 color;
|
||||
|
||||
uniform mat4 projection;
|
||||
uniform mat4 view;
|
||||
uniform mat4 transform;
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = transform * vec4(aPos, 1.0);
|
||||
gl_Position = projection * view * transform * vec4(aPos, 1.0);
|
||||
color = aColor;
|
||||
}
|
@ -5,10 +5,12 @@ layout (location = 2) in vec2 aTexCoord;
|
||||
|
||||
out vec2 texCoord;
|
||||
|
||||
uniform mat4 projection;
|
||||
uniform mat4 view;
|
||||
uniform mat4 transform;
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = transform * vec4(aPos, 1.0);
|
||||
gl_Position = projection * view * transform * vec4(aPos, 1.0);
|
||||
texCoord = aTexCoord;
|
||||
}
|
@ -7,11 +7,13 @@ layout (location = 2) in vec2 aTexCoord;
|
||||
out vec2 texCoord;
|
||||
out vec4 color;
|
||||
|
||||
uniform mat4 projection;
|
||||
uniform mat4 view;
|
||||
uniform mat4 transform;
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = transform * vec4(aPos, 1.0);
|
||||
gl_Position = projection * view * transform * vec4(aPos, 1.0);
|
||||
color = vec4(aColor, 1.0f);
|
||||
texCoord = aTexCoord;
|
||||
}
|
@ -1,11 +1,7 @@
|
||||
package engine;
|
||||
|
||||
import engine.math.Primitive;
|
||||
import engine.math.Vector3f;
|
||||
import engine.object.ObjectGl;
|
||||
import engine.object.ObjectGlColor;
|
||||
import engine.object.ObjectGlTex;
|
||||
import engine.object.ObjectGlTexColor;
|
||||
import engine.math.*;
|
||||
import engine.object.*;
|
||||
import org.lwjgl.glfw.GLFWFramebufferSizeCallback;
|
||||
import org.lwjgl.glfw.GLFWVidMode;
|
||||
import org.lwjgl.opengl.GL;
|
||||
@ -31,6 +27,8 @@ public class Engine {
|
||||
public Engine() {
|
||||
this.running = false;
|
||||
this.objectsGl = new ArrayList<>();
|
||||
ObjectGl.projection = Matrix4f.orthographic(-10.0f, 10.0f, -10.0f * 9.0f / 16.0f, 10.0f * 9.0f / 16.0f, 0.1f, 100.0f);
|
||||
ObjectGl.view = Matrix4f.translate(new Vector3f(0.0f,0.0f,1.0f));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -70,7 +68,7 @@ public class Engine {
|
||||
|
||||
glfwSetFramebufferSizeCallback(window, resizeWindow);
|
||||
|
||||
glEnable(GL_DEPTH_TEST); // Z-Buffer
|
||||
glEnable(GL_DEPTH_TEST); // Z-Buffer plus z est petit plus l'objet est proche de la camera limite à 0.1f au dela l'objet disparait
|
||||
|
||||
glEnable(GL_BLEND); // Transparence
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
@ -141,16 +139,34 @@ public class Engine {
|
||||
// Add objects to render
|
||||
List<String> path = new ArrayList<>();
|
||||
path.add("textures/awesomeface.png");
|
||||
ObjectGlTexColor cube = new ObjectGlTexColor(-0.5f,0.5f,0.0f,1.0f,1.0f, path, Primitive.stdTexWrap, new float[] {1.0f,1.0f,1.0f});
|
||||
engine.add_objectGl(cube);
|
||||
|
||||
ObjectGl smiley = new ObjectGlTex(-0.5f,0.5f,0.0f,1.0f,1.0f, path, Primitive.stdTexWrap);
|
||||
engine.add_objectGl(smiley);
|
||||
|
||||
ObjectGl smiley2 = new ObjectGlTex(-0.5f,0.5f,0.0f,1.0f,1.0f, path, Primitive.stdTexWrap);
|
||||
engine.add_objectGl(smiley2);
|
||||
smiley2.translate(new Vector3f(0.5f,0.0f,10.0f));
|
||||
|
||||
long timer = System.currentTimeMillis();
|
||||
int frame = 0;
|
||||
|
||||
while(engine.isRunning()){
|
||||
|
||||
// Game logic should fit here
|
||||
smiley.rotateY(1.0f);
|
||||
smiley2.rotateY(0.8f);
|
||||
|
||||
//essential part v
|
||||
engine.update();
|
||||
engine.render();
|
||||
|
||||
frame++;
|
||||
|
||||
if (System.currentTimeMillis() - timer > 1000) {
|
||||
timer += 1000;
|
||||
System.out.println("FPS: " + frame);
|
||||
frame = 0;
|
||||
}
|
||||
|
||||
if(engine.shouldClose()) engine.setRunning(false);
|
||||
}
|
||||
}
|
||||
|
@ -15,6 +15,9 @@ public class ObjectGl {
|
||||
protected Shader shader;
|
||||
protected Matrix4f transform;
|
||||
|
||||
public static Matrix4f projection;
|
||||
public static Matrix4f view;
|
||||
|
||||
public ObjectGl(){
|
||||
|
||||
}
|
||||
@ -51,7 +54,11 @@ public class ObjectGl {
|
||||
|
||||
public void render(){
|
||||
this.shader.enable();
|
||||
|
||||
this.shader.setUniformMat4f("projection", projection);
|
||||
this.shader.setUniformMat4f("view", view);
|
||||
this.shader.setUniformMat4f("transform", this.transform);
|
||||
|
||||
this.vertexArray.render();
|
||||
this.shader.disable();
|
||||
}
|
||||
|
@ -35,6 +35,8 @@ public class ObjectGlTex extends ObjectGl{
|
||||
public void render() {
|
||||
this.shader.enable();
|
||||
|
||||
this.shader.setUniformMat4f("projection", projection);
|
||||
this.shader.setUniformMat4f("view", view);
|
||||
this.shader.setUniformMat4f("transform", this.transform);
|
||||
|
||||
for (Texture t : textures){
|
||||
|
Loading…
x
Reference in New Issue
Block a user