Advertisement
Guest User

shader code

a guest
Nov 7th, 2013
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. // --------------------------------------------------------
  2. //
  3. // Shader Stuff
  4. //
  5.  
  6. void printShaderInfoLog(GLuint obj)
  7. {
  8. int infologLength = 0;
  9. int charsWritten = 0;
  10. char *infoLog;
  11.  
  12. glGetShaderiv(obj, GL_INFO_LOG_LENGTH,&infologLength);
  13.  
  14. if (infologLength > 0)
  15. {
  16. infoLog = (char *)malloc(infologLength);
  17. glGetShaderInfoLog(obj, infologLength, &charsWritten, infoLog);
  18. printf("%s\n",infoLog);
  19. free(infoLog);
  20. }
  21. }
  22.  
  23.  
  24. void printProgramInfoLog(GLuint obj)
  25. {
  26. int infologLength = 0;
  27. int charsWritten = 0;
  28. char *infoLog;
  29.  
  30. glGetProgramiv(obj, GL_INFO_LOG_LENGTH,&infologLength);
  31.  
  32. if (infologLength > 0)
  33. {
  34. infoLog = (char *)malloc(infologLength);
  35. glGetProgramInfoLog(obj, infologLength, &charsWritten, infoLog);
  36. printf("%s\n",infoLog);
  37. free(infoLog);
  38. }
  39. }
  40.  
  41.  
  42. GLuint setupShaders() {
  43.  
  44. char *vs = NULL,*fs = NULL,*fs2 = NULL;
  45.  
  46. GLuint p,v,f;
  47.  
  48. v = glCreateShader(GL_VERTEX_SHADER);
  49. f = glCreateShader(GL_FRAGMENT_SHADER);
  50.  
  51. vs = textFileRead(vertexFileName);
  52. fs = textFileRead(fragmentFileName);
  53.  
  54. const char * vv = vs;
  55. const char * ff = fs;
  56.  
  57. glShaderSource(v, 1, &vv,NULL);
  58. glShaderSource(f, 1, &ff,NULL);
  59.  
  60. free(vs);free(fs);
  61.  
  62. glCompileShader(v);
  63. glCompileShader(f);
  64.  
  65. printShaderInfoLog(v);
  66. printShaderInfoLog(f);
  67.  
  68. p = glCreateProgram();
  69. glAttachShader(p,v);
  70. glAttachShader(p,f);
  71.  
  72. glBindFragDataLocation(p, 0, "output");
  73.  
  74. glBindAttribLocation(p,vertexLoc,"position");
  75. glBindAttribLocation(p,normalLoc,"normal");
  76. glBindAttribLocation(p,texCoordLoc,"texCoord");
  77.  
  78. glLinkProgram(p);
  79. glValidateProgram(p);
  80. printProgramInfoLog(p);
  81.  
  82. program = p;
  83. vertexShader = v;
  84. fragmentShader = f;
  85.  
  86. GLuint k = glGetUniformBlockIndex(p,"Matrices");
  87. glUniformBlockBinding(p, k, matricesUniLoc);
  88. glUniformBlockBinding(p, glGetUniformBlockIndex(p,"Material"), materialUniLoc);
  89.  
  90. texUnit = glGetUniformLocation(p,"texUnit");
  91.  
  92. return(p);
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement