6 #pragma clang diagnostic ignored "-Wdeprecated-declarations"
10 void attachShader(GLuint progId, string filePath, GLenum type) {
11 GLuint shader = glCreateShader(type);
14 cerr << "error creating shader" << endl;
18 ifstream file(filePath);
20 buffer << file.rdbuf();
21 string str = buffer.str();
22 const char* contents = str.c_str();
24 glShaderSource(shader, 1, (const GLchar**)&contents, NULL);
25 glCompileShader(shader);
27 glGetShaderiv(shader, GL_COMPILE_STATUS, &success);
30 glGetShaderInfoLog(shader, 1024, NULL, log);
31 fprintf(stderr, "Error compiling %s\n%s\n", filePath.c_str(), log);
34 glAttachShader(progId, shader);
37 Program::Program(const string vertexShader, const string fragmentShader) {
38 progId = glCreateProgram();
40 attachShader(progId, vertexShader, GL_VERTEX_SHADER);
41 attachShader(progId, fragmentShader, GL_FRAGMENT_SHADER);
43 glLinkProgram(progId);
45 glGetProgramiv(progId, GL_LINK_STATUS, &success);
48 glGetProgramInfoLog(progId, sizeof(log), NULL, log);
49 fprintf(stderr, "error linking %s and %s\n%s\n", vertexShader.c_str(), fragmentShader.c_str(), log);
54 void Program::validate() const {
55 glValidateProgram(progId);
58 glGetProgramiv(progId, GL_VALIDATE_STATUS, &success);
61 glGetProgramInfoLog(progId, sizeof(log), NULL, log);
62 fprintf(stderr, "Error validating: %s\n", log);