43 lines
1.0 KiB
Java
43 lines
1.0 KiB
Java
package themixray.repeating.mod.render.shader;
|
|
|
|
import lombok.Getter;
|
|
|
|
import java.nio.FloatBuffer;
|
|
|
|
import static org.lwjgl.opengl.GL33.*;
|
|
|
|
public class Shader {
|
|
@Getter
|
|
private final int id;
|
|
|
|
|
|
public Shader(String name) {
|
|
int v = ShaderManager.loadShaderProgram(name, ShaderManager.ShaderType.VERTEX);
|
|
int f = ShaderManager.loadShaderProgram(name, ShaderManager.ShaderType.FRAGMENT);
|
|
this.id = glCreateProgram();
|
|
glAttachShader(id, v);
|
|
glAttachShader(id, f);
|
|
glLinkProgram(id);
|
|
}
|
|
|
|
public void bind() {
|
|
glUseProgram(id);
|
|
}
|
|
|
|
public void unbind() {
|
|
glUseProgram(0);
|
|
}
|
|
|
|
public void uniformMatrix4f(String name, FloatBuffer matrix) {
|
|
bind();
|
|
glUniformMatrix4fv(glGetUniformLocation(id, name), false, matrix);
|
|
unbind();
|
|
}
|
|
|
|
public void uniformValue2f(String name, float value1, float value2) {
|
|
bind();
|
|
glUniform2f(glGetUniformLocation(id, name), value1, value2);
|
|
unbind();
|
|
}
|
|
}
|