1
0
Fork 0

Add Game Engine Main File

This commit is contained in:
MrDev023 2017-01-14 13:13:28 +01:00
parent 929fcb19f2
commit 569f2dfb00
39 changed files with 2503 additions and 29 deletions

View file

@ -0,0 +1,89 @@
package globalgamejam.render;
import static org.lwjgl.opengl.GL11.*;
import static org.lwjgl.opengl.GL20.*;
import globalgamejam.input.*;
import globalgamejam.math.*;
/**
* Class created by MrDev023 (Florian RICHER) on 14/01/2017
*/
public class Shaders {
public int program;
public Shaders(String vertexFile,String fragmentFile) throws Exception{
String fragmentShader = IO.loadFile(fragmentFile);
String vertexShader = IO.loadFile(vertexFile);
if(program != -1)glDeleteProgram(program);
program = glCreateProgram();
int vert = glCreateShader(GL_VERTEX_SHADER);
int frag = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(vert, vertexShader);
glShaderSource(frag, fragmentShader);
glCompileShader(vert);
if (glGetShaderi(vert, GL_COMPILE_STATUS) == GL_FALSE) {
System.err.println(glGetShaderInfoLog(vert, 2048));
System.exit(1);
}else{
System.out.println("Vertex compiled !");
}
glCompileShader(frag);
if (glGetShaderi(frag, GL_COMPILE_STATUS) == GL_FALSE) {
System.err.println(glGetShaderInfoLog(frag, 2048));
System.exit(1);
}else{
System.out.println("Fragment compiled !");
}
glAttachShader(program, vert);
glAttachShader(program, frag);
glLinkProgram(program);
glValidateProgram(program);
glDeleteShader(frag);
glDeleteShader(vert);
}
public void bind(){
glUseProgram(program);
}
public void unbind(){
glUseProgram(0);
}
public int getAttribLocation(String name){
return glGetAttribLocation(program, name);
}
public void destroy(){
if(program == 0)return;
if(glIsProgram(program))unbind();
glDeleteProgram(program);
}
public void uniform(String name,float v){
glUniform1f(glGetUniformLocation(program, name), v);
}
public void uniform(String name,Vector3f vec){
glUniform3f(glGetUniformLocation(program, name), vec.x,vec.y,vec.z);
}
public void uniform(String name,Vector4f vec){
glUniform4f(glGetUniformLocation(program, name), vec.x,vec.y,vec.z,vec.w);
}
public void uniform(String name,Matrix4f mat){
glUniformMatrix4fv(glGetUniformLocation(program, name),true, mat.getBuffer());
}
public void uniform(String name, Color4f v) {
glUniform4f(glGetUniformLocation(program, name), v.getR(),v.getG(),v.getB(),v.getA());
}
public void uniform(String name,int v){
glUniform1i(glGetUniformLocation(program,name), v);
}
}