26 #define printOpenGLError() printOglError(__FILE__, __LINE__) 28 char *Shaders::textFileRead(
const char *fn) {
39 fseek(fp, 0, SEEK_END);
44 content = (
char *)malloc(
sizeof(
char) * (count+1));
45 count = fread(content,
sizeof(
char),count,fp);
46 content[count] =
'\0';
51 std::cerr <<
"Shader not found!" << std::endl;
58 int Shaders::printOglError(
char *file,
int line)
67 while (glErr != GL_NO_ERROR)
69 printf(
"glError in file %s @ line %d: %s\n", file, line, gluErrorString(glErr));
76 void Shaders::printShaderInfoLog(GLuint obj)
79 int infologLength = 0;
83 glGetShaderiv(obj, GL_INFO_LOG_LENGTH,&infologLength);
84 if (infologLength > 0)
86 infoLog = (
char *)malloc(infologLength);
87 glGetShaderInfoLog(obj, infologLength, &charsWritten, infoLog);
88 printf(
"%s\n",infoLog);
92 glGetShaderiv(obj, GL_COMPILE_STATUS,&status);
94 printf(
"Shader compiled\n");
96 printf(
"Shader not compiled\n");
100 void Shaders::printProgramInfoLog(GLuint obj)
102 int infologLength = 0;
103 int charsWritten = 0;
106 glGetProgramiv(obj, GL_INFO_LOG_LENGTH,&infologLength);
108 if (infologLength > 0)
110 infoLog = (
char *)malloc(infologLength);
111 glGetProgramInfoLog(obj, infologLength, &charsWritten, infoLog);
112 printf(
"%s\n",infoLog);
117 GLuint Shaders::carregueShaders(
const char *vertexFileName,
const char *fragmentFileName) {
119 const GLchar *vs = NULL,*fs = NULL;
124 v = glCreateShader(GL_VERTEX_SHADER);
125 vs = (
const GLchar *)textFileRead(vertexFileName);
126 glShaderSource(v, 1, &vs, NULL);
129 printShaderInfoLog(v);
132 f = glCreateShader(GL_FRAGMENT_SHADER);
133 fs = (
const GLchar *)textFileRead(fragmentFileName);
134 glShaderSource(f, 1, &fs,NULL);
137 printShaderInfoLog(f);
140 p = glCreateProgram();
146 printProgramInfoLog(p);