gytebot/src/main/java/me/srvstr/shader/Shader.java

47 lines
1.2 KiB
Java

package me.srvstr.shader;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.lwjgl.opengl.GL20C;
public class Shader
implements AutoCloseable {
private int shaderHandle;
public Shader(String fileName, int shaderType) throws AssertionError {
this.shaderHandle = GL20C.glCreateShader(shaderType);
GL20C.glShaderSource(this.shaderHandle, getSource(fileName));
GL20C.glCompileShader(this.shaderHandle);
if (GL20C.glGetShaderi(this.shaderHandle, 35713) == 0) {
System.err.println(GL20C.glGetShaderInfoLog(this.shaderHandle));
throw new AssertionError("Could not compile Shader: " + fileName);
}
}
private String getSource(String fileName) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(getClass().getResource(fileName).openStream()));
String result = reader.lines().reduce("", (A, B) -> String.valueOf(A) + B + System.lineSeparator());
reader.close();
return result;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public final int getHandle() {
return this.shaderHandle;
}
public void close() {
GL20C.glDeleteShader(this.shaderHandle);
}
}