Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package passage.games;
- import static org.lwjgl.opengl.GL11.*;
- import static org.lwjgl.opengl.GL20.*;
- import static org.lwjgl.util.glu.GLU.*;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileReader;
- public class Shader {
- public int programID;
- public int vertexShaderID;
- public int fragmentShaderID;
- public Shader()
- {
- programID = glCreateProgram();
- }
- public void attachVertexShader(String name)
- {
- String vertexShaderSource = sourceFromFile(name);
- vertexShaderID = glCreateShader(GL_VERTEX_SHADER);
- glShaderSource(vertexShaderID, vertexShaderSource);
- glCompileShader(vertexShaderID);
- if (glGetShaderi(vertexShaderID, GL_COMPILE_STATUS) == GL_FALSE)
- {
- //The maxLength includes the NULL character
- System.out.println("Error in vertex shader: " + glGetShaderInfoLog(vertexShaderID, 256));
- }
- glAttachShader(programID, vertexShaderID);
- }
- public void attachFragmentShader(String name)
- {
- String fragmentShaderSource = sourceFromFile(name);
- fragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER);
- glShaderSource(fragmentShaderID, fragmentShaderSource);
- glCompileShader(fragmentShaderID);
- if (glGetShaderi(fragmentShaderID, GL_COMPILE_STATUS) == GL_FALSE)
- {
- System.out.println("Error in fragment shader: " + glGetShaderInfoLog(fragmentShaderID, 256));
- }
- glAttachShader(programID, fragmentShaderID);
- }
- public void link()
- {
- glLinkProgram(programID);
- if (glGetProgrami(programID, GL_LINK_STATUS) == GL_FALSE)
- {
- }
- }
- public void bind()
- {
- glUseProgram(programID);
- }
- public void unbind()
- {
- glUseProgram(0);
- }
- public void dispose()
- {
- unbind();
- glDetachShader(programID, vertexShaderID);
- glDetachShader(programID, fragmentShaderID);
- glDeleteShader(vertexShaderID);
- glDeleteShader(fragmentShaderID);
- glDeleteProgram(programID);
- }
- public static String sourceFromFile(String name)
- {
- StringBuilder source = new StringBuilder();
- try
- {
- BufferedReader reader = new BufferedReader(new FileReader(new File(name)));
- String line;
- while ((line = reader.readLine()) != null)
- {
- source.append(line).append("\n");
- }
- reader.close();
- }
- catch (Exception e)
- {
- System.err.println("Error loading source code: " + name);
- e.printStackTrace();
- }
- return source.toString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement