#include "shader.h" #include GLuint createShader(const char *vertexCode, const char *fragmentCode) { GLuint vertex, fragment; int success; char infoLog[512]; vertex = glCreateShader(GL_VERTEX_SHADER); glShaderSource(vertex, 1, &vertexCode, NULL); glCompileShader(vertex); glGetShaderiv(vertex, GL_COMPILE_STATUS, &success); if (!success) { glGetShaderInfoLog(vertex, 512, NULL, infoLog); fprintf(stderr, "ERROR: Failed to compile vertex shader: %s\n", infoLog); } fragment = glCreateShader(GL_FRAGMENT_SHADER); glShaderSource(fragment, 1, &fragmentCode, NULL); glCompileShader(fragment); glGetShaderiv(fragment, GL_COMPILE_STATUS, &success); if (!success) { glGetShaderInfoLog(fragment, 512, NULL, infoLog); fprintf(stderr, "ERROR: Failed to compile fragment shader: %s\n", infoLog); } GLuint ShaderProgram = glCreateProgram(); glAttachShader(ShaderProgram, vertex); glAttachShader(ShaderProgram, fragment); glLinkProgram(ShaderProgram); glGetProgramiv(ShaderProgram, GL_LINK_STATUS, &success); if (!success) { fprintf(stderr, "Failed to link shaders\n"); } glDeleteShader(vertex); glDeleteShader(fragment); return ShaderProgram; }