Advertisement
Guest User

Untitled

a guest
Feb 7th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. /* Create shader */
  2. shader :: shader(arraylist<char> *vs,arraylist<char> *fs)
  3. {
  4. char **vsc;
  5. char **fsc;
  6. int i;
  7. GLint res;
  8. /* Begin */
  9. valid = 0;
  10. /* Create the shaders */
  11. gl_v_index = glCreateShader(GL_VERTEX_SHADER);
  12. gl_f_index = glCreateShader(GL_FRAGMENT_SHADER);
  13. /* Load the program script text */
  14. vsc = new char*[vs->get_size()];
  15. for(i = 0;i < vs->get_size();i++)
  16. vsc[i] = vs->get(i);
  17. fsc = new char*[fs->get_size()];
  18. for(i = 0;i < fs->get_size();i++)
  19. fsc[i] = fs->get(i);
  20. glShaderSource(gl_v_index,vs->get_size(),(const GLchar**)vsc,0);
  21. glShaderSource(gl_f_index,fs->get_size(),(const GLchar**)fsc,0);
  22. /* Compile */
  23. glCompileShader(gl_v_index);
  24. glCompileShader(gl_f_index);
  25. /* Verify */
  26. glGetShaderiv(gl_v_index,GL_COMPILE_STATUS,&res);
  27. if(!res)
  28. {
  29. print_error("glsl-error.txt",gl_v_index);
  30. #ifdef WIN32
  31. MessageBoxA(0,"Could not compile vertex shader, video performance may be poor","Warning",MB_ICONWARNING);
  32. #endif
  33. return;
  34. }
  35. glGetShaderiv(gl_f_index,GL_COMPILE_STATUS,&res);
  36. if(!res)
  37. {
  38. print_error("glsl-error.txt",gl_f_index);
  39. #ifdef WIN32
  40. MessageBoxA(0,"Could not compile fragment shader, video performance may be poor","Warning",MB_ICONWARNING);
  41. #endif
  42. return;
  43. }
  44. /* Create the program */
  45. gl_p_index = glCreateProgram();
  46. /* Attach */
  47. glAttachShader(gl_p_index,gl_v_index);
  48. glAttachShader(gl_p_index,gl_f_index);
  49. /* Link */
  50. glLinkProgram(gl_p_index);
  51. /* Verify */
  52. glGetProgramiv(gl_p_index,GL_LINK_STATUS,&res);
  53. if(!res)
  54. {
  55. print_error("glsl-error.txt",gl_p_index);
  56. #ifdef WIN32
  57. MessageBoxA(0,"Could not link shader, video performance may be poor","Warning",MB_ICONWARNING);
  58. #endif
  59. return;
  60. }
  61. /* Done */
  62. valid = 1;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement