SHARE
TWEET

ShaderProgram.java

Giuseppe499 Oct 27th, 2015 137 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.main;
  2.  
  3. import static org.lwjgl.opengl.GL11.*;
  4. import static org.lwjgl.opengl.GL20.*;
  5.  
  6. public class ShaderProgram {
  7.        
  8.         private int programID;
  9.         private int vertexShaderID;
  10.         private int fragmentShaderID;
  11.        
  12.         public ShaderProgram() {
  13.                 programID = glCreateProgram();
  14.         }
  15.        
  16.         public void attachVertexShader(String name)
  17.         {
  18.             // Load the source
  19.             String vertexShaderSource = FileUtil.readFromFile(name);
  20.  
  21.             // Create the shader and set the source
  22.             vertexShaderID = glCreateShader(GL_VERTEX_SHADER);
  23.             glShaderSource(vertexShaderID, vertexShaderSource);
  24.  
  25.             // Compile the shader
  26.             glCompileShader(vertexShaderID);
  27.  
  28.             // Check for errors
  29.             if (glGetShaderi(vertexShaderID, GL_COMPILE_STATUS) == GL_FALSE)
  30.                 throw new RuntimeException("Error creating vertex shader\n"
  31.                                            + glGetShaderInfoLog(vertexShaderID, glGetShaderi(vertexShaderID, GL_INFO_LOG_LENGTH)));
  32.  
  33.             // Attach the shader
  34.             glAttachShader(programID, vertexShaderID);
  35.         }
  36.        
  37.         public void attachFragmentShader(String name)
  38.         {
  39.             // Load the source
  40.             String fragmentShaderSource = FileUtil.readFromFile(name);
  41.  
  42.             // Create the shader and set the source
  43.             fragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER);
  44.             glShaderSource(fragmentShaderID, fragmentShaderSource);
  45.  
  46.             // Compile the shader
  47.             glCompileShader(fragmentShaderID);
  48.  
  49.             // Check for errors
  50.             if (glGetShaderi(fragmentShaderID, GL_COMPILE_STATUS) == GL_FALSE)
  51.                 throw new RuntimeException("Error creating vertex shader\n"
  52.                                            + glGetShaderInfoLog(fragmentShaderID, glGetShaderi(fragmentShaderID, GL_INFO_LOG_LENGTH)));
  53.  
  54.             // Attach the shader
  55.             glAttachShader(programID, fragmentShaderID);
  56.         }
  57.        
  58.         public void link()
  59.         {
  60.             // Link this program
  61.             glLinkProgram(programID);
  62.  
  63.             // Check for linking errors
  64.             if (glGetProgrami(programID, GL_LINK_STATUS) == GL_FALSE)
  65.                 throw new RuntimeException("Unable to link shader program:");
  66.         }
  67.        
  68.         public void bind()
  69.     {
  70.         glUseProgram(programID);
  71.     }
  72.        
  73.         public void unbind()
  74.     {
  75.         glUseProgram(0);
  76.     }
  77.        
  78.          public void dispose()
  79.             {
  80.                 // Unbind the program
  81.                 unbind();
  82.  
  83.                 // Detach the shaders
  84.                 glDetachShader(programID, vertexShaderID);
  85.                 glDetachShader(programID, fragmentShaderID);
  86.  
  87.                 // Delete the shaders
  88.                 glDeleteShader(vertexShaderID);
  89.                 glDeleteShader(fragmentShaderID);
  90.  
  91.                 // Delete the program
  92.                 glDeleteProgram(programID);
  93.             }
  94.          
  95.          public int getID()
  96.             {
  97.                 return programID;
  98.             }
  99. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top