Guest User

Untitled

a guest
Nov 30th, 2014
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.59 KB | None | 0 0
  1. package net.mrpizzacake.futura.graphics;
  2.  
  3. import com.sun.org.apache.xalan.internal.xsltc.compiler.CompilerException;
  4. import org.lwjgl.BufferUtils;
  5. import org.lwjgl.opengl.GL20;
  6.  
  7. import java.io.BufferedReader;
  8. import java.io.File;
  9. import java.io.FileReader;
  10. import java.nio.IntBuffer;
  11.  
  12. import static org.lwjgl.opengl.GL11.*;
  13. import static org.lwjgl.opengl.GL20.*;
  14.  
  15. public final class Shader
  16. {
  17. private int id;
  18. private int vertShader;
  19. private int fragShader;
  20.  
  21. public Shader(File vertSourceFile, File fragSourceFile) throws Exception
  22. {
  23. id = glCreateProgram();
  24.  
  25. vertShader = glCreateShader(GL_VERTEX_SHADER);
  26. fragShader = glCreateShader(GL_FRAGMENT_SHADER);
  27.  
  28. StringBuilder vertSourceBuilder = new StringBuilder();
  29. StringBuilder fragSourceBuilder = new StringBuilder();
  30.  
  31. String line;
  32.  
  33. BufferedReader vertReader = new BufferedReader(new FileReader(vertSourceFile));
  34. while ((line = vertReader.readLine()) != null)
  35. vertSourceBuilder.append(line).append('\n');
  36. vertReader.close();
  37.  
  38. BufferedReader fragReader = new BufferedReader(new FileReader(fragSourceFile));
  39. while ((line = fragReader.readLine()) != null)
  40. fragSourceBuilder.append(line).append('\n');
  41. fragReader.close();
  42.  
  43. String vertSource = vertSourceBuilder.toString();
  44. String fragSource = fragSourceBuilder.toString();
  45.  
  46. make(vertShader, vertSource);
  47. make(fragShader, fragSource);
  48. }
  49.  
  50. public Shader(String vertSource, String fragSource)
  51. {
  52. id = glCreateProgram();
  53.  
  54. vertShader = glCreateShader(GL_VERTEX_SHADER);
  55. System.out.println(vertShader);
  56. if (vertShader == 0)
  57. System.err.println("Shader wasn't created properly");
  58.  
  59. fragShader = glCreateShader(GL_FRAGMENT_SHADER);
  60. System.out.println(fragShader);
  61. if (fragShader == 0)
  62. System.err.println("Shader wasn't created properly");
  63.  
  64. make(vertShader, vertSource);
  65. make(fragShader, fragSource);
  66.  
  67. glLinkProgram(id);
  68. if (glGetProgrami(id, GL_LINK_STATUS) == GL_FALSE)
  69. System.err.println("Shader program wasn't linked properly");
  70.  
  71. glValidateProgram(id);
  72. if (glGetProgrami(id, GL_VALIDATE_STATUS) == GL_FALSE)
  73. System.err.println("Shader program wasn't validated properly");
  74.  
  75. System.out.println(glGetProgramInfoLog(id));
  76. }
  77.  
  78. private void make(int shader, String source)
  79. {
  80. glShaderSource(shader, source);
  81. glCompileShader(shader);
  82. if (glGetShaderi(shader, GL20.GL_COMPILE_STATUS) == GL_FALSE)
  83. System.err.println("Shader wasn't compiled properly");
  84.  
  85. glAttachShader(id, shader);
  86. System.out.println(glGetShaderInfoLog(shader));
  87. }
  88.  
  89. public void use()
  90. {
  91. glUseProgram(id);
  92. }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment