Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Shader {
- public Shader() {
- program = GL20.glCreateProgram();
- uniforms = new HashMap<String, Integer>();
- }
- private int program;
- private HashMap<String, Integer> uniforms;
- public void addVertexShader(String fileName) {
- addShader(ShaderLoader.loadShader(fileName), GL20.GL_VERTEX_SHADER);
- }
- public void addFragmentShader(String fileName) {
- addShader(ShaderLoader.loadShader(fileName), GL20.GL_FRAGMENT_SHADER);
- }
- private void addShader(String code, int shaderType) {
- int shader = GL20.glCreateShader(shaderType);
- GL20.glShaderSource(shader, code);
- GL20.glCompileShader(shader);
- GL20.glAttachShader(program, shader);
- String infoLog = GL20.glGetShaderInfoLog(shader, GL20.glGetShaderi(shader, GL20.GL_INFO_LOG_LENGTH));
- if(!infoLog.equals("")){
- System.out.println(infoLog);
- }
- }
- public void compile() {
- linkProgram();
- validateProgram();
- }
- public void validateProgram() {
- GL20.glValidateProgram(program);
- }
- public void linkProgram() {
- GL20.glLinkProgram(program);
- }
- public void useProgram() {
- GL20.glUseProgram(program);
- }
- public void delselectProgram(){
- GL20.glUseProgram(0);
- }
- public void destroyProgram() {
- GL20.glDeleteProgram(program);
- }
- public void addUniform(String uniform) {
- uniforms.put(uniform, GL20.glGetUniformLocation(program, uniform));
- }
- public void setUniformi(String uniform, int i) {
- int location = uniforms.get(uniform);
- GL20.glUniform1i(location, i);
- }
- public void setUniformf(String uniform, float f) {
- int location = uniforms.get(uniform);
- GL20.glUniform1f(location, f);
- }
- public void setUniform(String uniform, Vector2f vec) {
- int location = uniforms.get(uniform);
- GL20.glUniform2f(location, vec.getX(), vec.getY());
- }
- public void setUniformMatrix3(String name, Matrix3f matrix) {
- GL20.glUniformMatrix3(uniforms.get(name), true, Util.createFlippedBuffer(matrix));
- }
- public void setUniformMatrix4(String name, Matrix4f matrix){
- GL20.glUniformMatrix3(uniforms.get(name), true, Util.createFlippedBuffer(matrix));
- }
- private String getName(int shaderType) {
- if (shaderType == GL20.GL_VERTEX_SHADER) {
- return "GL_VERTEX_SHADER";
- } else if (shaderType == GL20.GL_FRAGMENT_SHADER) {
- return "GL_FRAGMENT_SHADER";
- } else {
- return "UNKNOWN_SHADER";
- }
- }
- public int getProgram() {
- return program;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement