#include "block.h" #include "member.h" #include "uniform.h" #define GL_GLEXT_PROTOTYPES #include #include // GL 1.1 functions #include #include #include "../fileSystem.h" #include "../array.h" #include "../char.h" #include "sampler2D.h" class attribute{ GLchar name[64]; GLint location; GLenum type; } class shader{ GLuint glShader; constructor( GLuint shaderType ) { this->glShader = glCreateShader( shaderType ); } loadFromFile( char * shaderPath ) { text * shaderSource = filesystem->readFile( shaderPath, "utf8" ); glShaderSource( this->glShader, 1, &shaderSource->value, NULL ); glCompileShader( this->glShader ); this->checkShaderForErrors( this->glShader ); } checkShaderForErrors( GLuint shader ) { GLint isCompiled = 0; glGetShaderiv( shader, GL_COMPILE_STATUS, &isCompiled ); if( isCompiled == GL_FALSE ) { GLint maxLength = 0; glGetShaderiv( shader, GL_INFO_LOG_LENGTH, &maxLength ); GLchar errorMessage[ maxLength ]; glGetShaderInfoLog( shader, maxLength, &maxLength, errorMessage ); printf("\n\n\n\n Error: %s\n\n\n\n\n\n", errorMessage); glDeleteShader( shader ); exit( 0 ); return; } } }