diff options
author | Rob Clark <robdclark@gmail.com> | 2017-02-21 12:14:42 -0500 |
---|---|---|
committer | Rob Clark <robdclark@gmail.com> | 2017-02-21 13:59:58 -0500 |
commit | 2ec69c153a5456758c924e14e70d6544e4d2a866 (patch) | |
tree | 79a6f556126ff6d896951a3122858a66f072757d /kmscube.c | |
parent | c6a1571a9b6a55b6d00040bac6172ffb4fd2d3b8 (diff) | |
download | kmscube-2ec69c153a5456758c924e14e70d6544e4d2a866.tar.gz |
split out get_program() helper
Diffstat (limited to 'kmscube.c')
-rw-r--r-- | kmscube.c | 77 |
1 files changed, 8 insertions, 69 deletions
@@ -36,12 +36,6 @@ #include <xf86drm.h> #include <xf86drmMode.h> -#define GL_GLEXT_PROTOTYPES 1 -#include <GLES2/gl2.h> -#include <GLES2/gl2ext.h> -#include <EGL/egl.h> -#include <EGL/eglext.h> - #include <assert.h> #include "common.h" @@ -207,8 +201,7 @@ static int init_drm(const char *dev) static int init_gl(void) { EGLint major, minor, n; - GLuint vertex_shader, fragment_shader; - GLint ret; + int ret; static const GLfloat vVertices[] = { // front @@ -412,73 +405,19 @@ static int init_gl(void) printf("GL Extensions: \"%s\"\n", glGetString(GL_EXTENSIONS)); - vertex_shader = glCreateShader(GL_VERTEX_SHADER); - - glShaderSource(vertex_shader, 1, &vertex_shader_source, NULL); - glCompileShader(vertex_shader); - - glGetShaderiv(vertex_shader, GL_COMPILE_STATUS, &ret); - if (!ret) { - char *log; - - printf("vertex shader compilation failed!:\n"); - glGetShaderiv(vertex_shader, GL_INFO_LOG_LENGTH, &ret); - if (ret > 1) { - log = malloc(ret); - glGetShaderInfoLog(vertex_shader, ret, NULL, log); - printf("%s", log); - } - - return -1; - } - - fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); - - glShaderSource(fragment_shader, 1, &fragment_shader_source, NULL); - glCompileShader(fragment_shader); - - glGetShaderiv(fragment_shader, GL_COMPILE_STATUS, &ret); - if (!ret) { - char *log; - - printf("fragment shader compilation failed!:\n"); - glGetShaderiv(fragment_shader, GL_INFO_LOG_LENGTH, &ret); - - if (ret > 1) { - log = malloc(ret); - glGetShaderInfoLog(fragment_shader, ret, NULL, log); - printf("%s", log); - } - - return -1; - } - - gl.program = glCreateProgram(); + ret = create_program(vertex_shader_source, fragment_shader_source); + if (ret < 0) + return ret; - glAttachShader(gl.program, vertex_shader); - glAttachShader(gl.program, fragment_shader); + gl.program = ret; glBindAttribLocation(gl.program, 0, "in_position"); glBindAttribLocation(gl.program, 1, "in_normal"); glBindAttribLocation(gl.program, 2, "in_color"); - glLinkProgram(gl.program); - - glGetProgramiv(gl.program, GL_LINK_STATUS, &ret); - if (!ret) { - char *log; - - printf("program linking failed!:\n"); - glGetProgramiv(gl.program, GL_INFO_LOG_LENGTH, &ret); - - if (ret > 1) { - log = malloc(ret); - glGetProgramInfoLog(gl.program, ret, NULL, log); - printf("%s", log); - } - - return -1; - } + ret = link_program(gl.program); + if (ret < 0) + return ret; glUseProgram(gl.program); |