aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/render.c42
1 files changed, 33 insertions, 9 deletions
diff --git a/src/render.c b/src/render.c
index bd4ef60..c554e8a 100644
--- a/src/render.c
+++ b/src/render.c
@@ -82,20 +82,44 @@ static GLuint render_load_shader(const char *filename, GLenum type) {
}
-static int render_validate_shader(GLuint shader) {
+static int render_link_program(GLuint program) {
+
+ int l;
+ GLint status;
+ char text[4096];
+
+ glLinkProgram(program);
+
+ glGetProgramiv(program, GL_LINK_STATUS, &status);
+ if ( status == GL_FALSE ) {
+ printf("Program linking errors:\n");
+ glGetProgramInfoLog(program, 4095, &l, text);
+ if ( l > 0 ) {
+ printf("%s\n", text); fflush(stdout);
+ } else {
+ printf("Program linking failed.\n");
+ }
+ }
+
+ return status;
+
+}
+
+static int render_validate_program(GLuint program) {
GLint status;
int l;
char text[4096];
- glValidateProgram(shader);
- glGetProgramiv(shader, GL_VALIDATE_STATUS, &status);
+ glValidateProgram(program);
+ glGetProgramiv(program, GL_VALIDATE_STATUS, &status);
if ( status == GL_FALSE ) {
- glGetProgramInfoLog(shader, 4095, &l, text);
+ printf("Program validation errors:\n");
+ glGetProgramInfoLog(program, 4095, &l, text);
if ( l > 0 ) {
printf("%s\n", text); fflush(stdout);
} else {
- printf("Shader did not validate successfully.\n");
+ printf("Program did not validate successfully.\n");
}
return 0;
}
@@ -112,8 +136,8 @@ static void render_load_shaders(RenderContext *r) {
r->lighting_program = glCreateProgram();
glAttachShader(r->lighting_program, r->lighting_vert);
glAttachShader(r->lighting_program, r->lighting_frag);
- glLinkProgram(r->lighting_program);
- render_validate_shader(r->lighting_program);
+ render_link_program(r->lighting_program);
+ render_validate_program(r->lighting_program);
/* Swirlyness */
r->swirly_vert = render_load_shader(DATADIR"/shaders/swirlytron.vert", GL_VERTEX_SHADER);
@@ -121,8 +145,8 @@ static void render_load_shaders(RenderContext *r) {
r->swirly_program = glCreateProgram();
glAttachShader(r->swirly_program, r->swirly_vert);
glAttachShader(r->swirly_program, r->swirly_frag);
- glLinkProgram(r->swirly_program);
- render_validate_shader(r->swirly_program);
+ render_link_program(r->swirly_program);
+ render_validate_program(r->swirly_program);
}