compile_shader.cpp 852 B

12345678910111213141516171819202122232425262728
  1. #include "compile_shader.h"
  2. #include "report_gl_error.h"
  3. #include <iostream>
  4. IGL_INLINE GLuint igl::compile_shader(const GLint type, const char * str)
  5. {
  6. GLuint id = glCreateShader(type);
  7. igl::report_gl_error("glCreateShader: ");
  8. glShaderSource(id,1,&str,NULL);
  9. igl::report_gl_error("glShaderSource: ");
  10. glCompileShader(id);
  11. igl::report_gl_error("glCompileShader: ");
  12. GLint status;
  13. glGetShaderiv(id, GL_COMPILE_STATUS, &status);
  14. if (status != GL_TRUE)
  15. {
  16. char buffer[512];
  17. if (type == GL_VERTEX_SHADER)
  18. std::cerr << "Vertex shader:" << std::endl;
  19. else if (type == GL_FRAGMENT_SHADER)
  20. std::cerr << "Fragment shader:" << std::endl;
  21. std::cerr << str << std::endl << std::endl;
  22. glGetShaderInfoLog(id, 512, NULL, buffer);
  23. std::cerr << "Error: " << std::endl << buffer << std::endl;
  24. }
  25. return id;
  26. }