Advertisement
Guest User

Untitled

a guest
Jun 30th, 2014
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.94 KB | None | 0 0
  1. package passage.games;
  2.  
  3. import static org.lwjgl.opengl.GL11.*;
  4. import static org.lwjgl.opengl.GL20.*;
  5. import static org.lwjgl.util.glu.GLU.*;
  6.  
  7. import java.io.BufferedReader;
  8. import java.io.File;
  9. import java.io.FileReader;
  10.  
  11. public class Shader {
  12. public int programID;
  13.  
  14. public int vertexShaderID;
  15. public int fragmentShaderID;
  16.  
  17. public Shader()
  18. {
  19. programID = glCreateProgram();
  20. }
  21.  
  22. public void attachVertexShader(String name)
  23. {
  24. String vertexShaderSource = sourceFromFile(name);
  25.  
  26. vertexShaderID = glCreateShader(GL_VERTEX_SHADER);
  27. glShaderSource(vertexShaderID, vertexShaderSource);
  28.  
  29. glCompileShader(vertexShaderID);
  30.  
  31. if (glGetShaderi(vertexShaderID, GL_COMPILE_STATUS) == GL_FALSE)
  32. {
  33. //The maxLength includes the NULL character
  34.  
  35. System.out.println("Error in vertex shader: " + glGetShaderInfoLog(vertexShaderID, 256));
  36. }
  37.  
  38. glAttachShader(programID, vertexShaderID);
  39. }
  40.  
  41. public void attachFragmentShader(String name)
  42. {
  43. String fragmentShaderSource = sourceFromFile(name);
  44.  
  45. fragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER);
  46. glShaderSource(fragmentShaderID, fragmentShaderSource);
  47.  
  48. glCompileShader(fragmentShaderID);
  49.  
  50. if (glGetShaderi(fragmentShaderID, GL_COMPILE_STATUS) == GL_FALSE)
  51. {
  52. System.out.println("Error in fragment shader: " + glGetShaderInfoLog(fragmentShaderID, 256));
  53. }
  54.  
  55. glAttachShader(programID, fragmentShaderID);
  56. }
  57.  
  58. public void link()
  59. {
  60. glLinkProgram(programID);
  61.  
  62. if (glGetProgrami(programID, GL_LINK_STATUS) == GL_FALSE)
  63. {
  64. }
  65. }
  66.  
  67. public void bind()
  68. {
  69. glUseProgram(programID);
  70. }
  71.  
  72. public void unbind()
  73. {
  74. glUseProgram(0);
  75. }
  76.  
  77. public void dispose()
  78. {
  79. unbind();
  80.  
  81. glDetachShader(programID, vertexShaderID);
  82. glDetachShader(programID, fragmentShaderID);
  83.  
  84. glDeleteShader(vertexShaderID);
  85. glDeleteShader(fragmentShaderID);
  86.  
  87. glDeleteProgram(programID);
  88. }
  89.  
  90. public static String sourceFromFile(String name)
  91. {
  92. StringBuilder source = new StringBuilder();
  93. try
  94. {
  95. BufferedReader reader = new BufferedReader(new FileReader(new File(name)));
  96.  
  97. String line;
  98. while ((line = reader.readLine()) != null)
  99. {
  100. source.append(line).append("\n");
  101. }
  102.  
  103. reader.close();
  104. }
  105. catch (Exception e)
  106. {
  107. System.err.println("Error loading source code: " + name);
  108. e.printStackTrace();
  109. }
  110.  
  111. return source.toString();
  112. }
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement