61 lines
1.8 KiB
Java
61 lines
1.8 KiB
Java
package engine.utils;
|
|
|
|
import engine.utils.FileUtils;
|
|
|
|
import static org.lwjgl.opengl.GL11.*;
|
|
import static org.lwjgl.opengl.GL20.*;
|
|
|
|
public class ShaderUtils {
|
|
|
|
private ShaderUtils(){
|
|
|
|
}
|
|
|
|
public static int load(String vertPath, String fragPath){
|
|
String vert = FileUtils.loadAsString(vertPath);
|
|
String frag = FileUtils.loadAsString(fragPath);
|
|
return create(vert, frag);
|
|
}
|
|
|
|
public static int create(String vert, String frag){
|
|
// On crée et compile le vertex et le fragment shader
|
|
int vertID = glCreateShader(GL_VERTEX_SHADER);
|
|
int fragID = glCreateShader(GL_FRAGMENT_SHADER);
|
|
glShaderSource(vertID, vert);
|
|
glShaderSource(fragID, frag);
|
|
|
|
glCompileShader(vertID);
|
|
if (glGetShaderi(vertID, GL_COMPILE_STATUS) == GL_FALSE){
|
|
System.err.println("Failed to compile vertex shader");
|
|
System.err.println(glGetShaderInfoLog(vertID));
|
|
return -1;
|
|
}
|
|
|
|
glCompileShader(fragID);
|
|
if (glGetShaderi(fragID, GL_COMPILE_STATUS) == GL_FALSE){
|
|
System.err.println("Failed to compile fragment shader");
|
|
System.err.println(glGetShaderInfoLog(fragID));
|
|
return -1;
|
|
}
|
|
//on lie les shaders au programme
|
|
int program = glCreateProgram();
|
|
glAttachShader(program, vertID);
|
|
glAttachShader(program, fragID);
|
|
glLinkProgram(program);
|
|
|
|
if(glGetProgrami(program, GL_LINK_STATUS) == GL_FALSE) {
|
|
System.err.println("Failed to link vertex and fragment shader");
|
|
System.err.println(glGetShaderInfoLog(program));
|
|
return -1;
|
|
}
|
|
|
|
glValidateProgram(program);
|
|
|
|
glDeleteShader(vertID);
|
|
glDeleteShader(fragID);
|
|
|
|
return program;
|
|
}
|
|
|
|
}
|