Files
wayland-starter/src/shader.cpp

46 lines
1.1 KiB
C++

#include <stdio.h>
#include <stdlib.h>
#include "shader.h"
GLuint compile_shader(GLenum type, const char *src) {
GLuint shader = glCreateShader(type);
glShaderSource(shader, 1, &src, NULL);
glCompileShader(shader);
GLint ok;
glGetShaderiv(shader, GL_COMPILE_STATUS, &ok);
if (!ok) {
char log[512];
glGetShaderInfoLog(shader, sizeof(log), NULL, log);
fprintf(stderr, "shader compile error: %s\n", log);
exit(1);
}
return shader;
}
GLuint create_program(const char *vs_src, const char *fs_src) {
GLuint vs = compile_shader(GL_VERTEX_SHADER, vs_src);
GLuint fs = compile_shader(GL_FRAGMENT_SHADER, fs_src);
GLuint prog = glCreateProgram();
glAttachShader(prog, vs);
glAttachShader(prog, fs);
glLinkProgram(prog);
GLint ok;
glGetProgramiv(prog, GL_LINK_STATUS, &ok);
if (!ok) {
char log[512];
glGetProgramInfoLog(prog, sizeof(log), NULL, log);
fprintf(stderr, "program link error: %s\n", log);
exit(1);
}
glDeleteShader(vs);
glDeleteShader(fs);
return prog;
}