Advertisement
Guest User

Shader

a guest
Nov 24th, 2013
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.48 KB | None | 0 0
  1. public class Shader {
  2.  
  3.     public Shader() {
  4.     program = GL20.glCreateProgram();
  5.     uniforms = new HashMap<String, Integer>();
  6.     }
  7.  
  8.     private int program;
  9.     private HashMap<String, Integer> uniforms;
  10.  
  11.     public void addVertexShader(String fileName) {
  12.     addShader(ShaderLoader.loadShader(fileName), GL20.GL_VERTEX_SHADER);
  13.     }
  14.  
  15.     public void addFragmentShader(String fileName) {
  16.     addShader(ShaderLoader.loadShader(fileName), GL20.GL_FRAGMENT_SHADER);
  17.     }
  18.  
  19.     private void addShader(String code, int shaderType) {
  20.     int shader = GL20.glCreateShader(shaderType);
  21.     GL20.glShaderSource(shader, code);
  22.     GL20.glCompileShader(shader);
  23.     GL20.glAttachShader(program, shader);
  24.  
  25.     String infoLog = GL20.glGetShaderInfoLog(shader, GL20.glGetShaderi(shader, GL20.GL_INFO_LOG_LENGTH));
  26.  
  27.     if(!infoLog.equals("")){
  28.         System.out.println(infoLog);
  29.     }
  30.  
  31.     }
  32.  
  33.     public void compile() {
  34.     linkProgram();
  35.     validateProgram();
  36.     }
  37.  
  38.     public void validateProgram() {
  39.     GL20.glValidateProgram(program);
  40.     }
  41.  
  42.     public void linkProgram() {
  43.     GL20.glLinkProgram(program);
  44.     }
  45.  
  46.     public void useProgram() {
  47.     GL20.glUseProgram(program);
  48.     }
  49.  
  50.     public void delselectProgram(){
  51.     GL20.glUseProgram(0);
  52.     }
  53.  
  54.     public void destroyProgram() {
  55.     GL20.glDeleteProgram(program);
  56.     }
  57.  
  58.     public void addUniform(String uniform) {
  59.     uniforms.put(uniform, GL20.glGetUniformLocation(program, uniform));
  60.     }
  61.  
  62.     public void setUniformi(String uniform, int i) {
  63.     int location = uniforms.get(uniform);
  64.     GL20.glUniform1i(location, i);
  65.     }
  66.  
  67.     public void setUniformf(String uniform, float f) {
  68.     int location = uniforms.get(uniform);
  69.     GL20.glUniform1f(location, f);
  70.     }
  71.  
  72.     public void setUniform(String uniform, Vector2f vec) {
  73.     int location = uniforms.get(uniform);
  74.     GL20.glUniform2f(location, vec.getX(), vec.getY());
  75.     }
  76.  
  77.     public void setUniformMatrix3(String name, Matrix3f matrix) {
  78.     GL20.glUniformMatrix3(uniforms.get(name), true, Util.createFlippedBuffer(matrix));
  79.     }
  80.  
  81.     public void setUniformMatrix4(String name, Matrix4f matrix){
  82.     GL20.glUniformMatrix3(uniforms.get(name), true, Util.createFlippedBuffer(matrix));
  83.     }
  84.  
  85.     private String getName(int shaderType) {
  86.     if (shaderType == GL20.GL_VERTEX_SHADER) {
  87.         return "GL_VERTEX_SHADER";
  88.     } else if (shaderType == GL20.GL_FRAGMENT_SHADER) {
  89.         return "GL_FRAGMENT_SHADER";
  90.     } else {
  91.         return "UNKNOWN_SHADER";
  92.     }
  93.     }
  94.  
  95.     public int getProgram() {
  96.     return program;
  97.     }
  98.  
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement