From 30a8a674ca821a8aafd08886de84933bce3803f7 Mon Sep 17 00:00:00 2001 From: Marrub Date: Thu, 12 Nov 2015 07:12:27 +0000 Subject: [PATCH] various improvements --- main.c | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/main.c b/main.c index c1f3254..5bc6a49 100644 --- a/main.c +++ b/main.c @@ -55,13 +55,35 @@ GLuint R_CreateShader(GLenum type, char const *src) if(!success) { glGetShaderInfoLog(shader, 512, NULL, log); - printf("Shader compile failed: %s\n", log); + fprintf(stderr, "Shader compile failed!\n%s\n", log); exit(1); } return shader; } +GLuint R_LinkProgram(GLuint vertShader, GLuint fragShader) +{ + char log[512]; + GLint success; + GLuint program; + + program = glCreateProgram(); + glAttachShader(program, vertShader); + glAttachShader(program, fragShader); + glLinkProgram(program); + glGetProgramiv(program, GL_LINK_STATUS, &success); + + if(!success) + { + glGetProgramInfoLog(program, 512, NULL, log); + fprintf(stderr, "Failed to link shader program!\n%s\n", log); + exit(1); + } + + return program; +} + char const *FXT_ReadFile(char const *fname) { FILE *fp; @@ -98,11 +120,7 @@ void R_InitGL() // Init shaders. re.VertShader = R_CreateShader(GL_VERTEX_SHADER, FXT_ReadFile("main.vp.glsl")); re.FragShader = R_CreateShader(GL_FRAGMENT_SHADER, FXT_ReadFile("main.fp.glsl")); - - re.Program = glCreateProgram(); - glAttachShader(re.Program, re.VertShader); - glAttachShader(re.Program, re.FragShader); - glLinkProgram(re.Program); + re.Program = R_LinkProgram(re.VertShader, re.FragShader); // Init uniform and attribute locations.