citrun

watch C/C++ source code execute
Log | Files | Refs | LICENSE

commit 3deec9842bec7dd31b798d51b1ec6d750b0d046a
parent d058bad6dd38c8d823af73841124889b4a0803e6
Author: Kyle Milz <kyle@getaddrinfo.net>
Date:   Tue, 15 Mar 2016 20:44:14 -0600

viewer: remove old hand rolled text generation

Diffstat:
Dviewer/shader_utils.cxx | 239-------------------------------------------------------------------------------
Dviewer/shader_utils.h | 18------------------
Dviewer/text.f.glsl | 7-------
Dviewer/text.v.glsl | 7-------
Dviewer/vert.glsl | 9---------
5 files changed, 0 insertions(+), 280 deletions(-)

diff --git a/viewer/shader_utils.cxx b/viewer/shader_utils.cxx @@ -1,239 +0,0 @@ -#include <err.h> -#include <stdio.h> -#include <stdlib.h> -#include <GL/glew.h> - -#include <fstream> - -#include "shader_utils.h" - -char* file_read(const char* filename); -void print_log(GLuint object); -GLuint create_shader(const char* filename, GLenum type); -GLuint create_program(const char* vertexfile, const char *fragmentfile); -GLuint create_gs_program(const char* vertexfile, const char *geometryfile, const char *fragmentfile, GLint input, GLint output, GLint vertices); -GLint get_attrib(GLuint program, const char *name); -GLint get_uniform(GLuint program, const char *name); - -shader::shader() -{ - program = create_program("text.v.glsl", "text.f.glsl"); - if (program == 0) - exit(1); - - attribute_coord = get_attrib(program, "coord"); - uniform_tex = get_uniform(program, "tex"); - uniform_color = get_uniform(program, "color"); - - if (attribute_coord == -1 || uniform_tex == -1 || uniform_color == -1) - exit(1); -} - -void -shader::use() -{ - glUseProgram(program); -} - -shader::~shader() -{ - glDeleteProgram(program); -} - -char * -file_read(const char *filename) -{ - std::ifstream in(filename); - int length; - - if (!in.good()) - return NULL; - - in.seekg(0, std::ios::end); - length = in.tellg(); - in.seekg(0, std::ios::beg); - - char *buffer = new char[length]; - in.read(buffer, length); - - if (!in.good()) - errx(1, "in.read(): only %li bytes could be read", in.gcount()); - - in.close(); - return buffer; -} - -/* - * Display compilation errors from the OpenGL shader compiler - */ -void print_log(GLuint object) -{ - GLint log_length = 0; - if (glIsShader(object)) - glGetShaderiv(object, GL_INFO_LOG_LENGTH, &log_length); - else if (glIsProgram(object)) - glGetProgramiv(object, GL_INFO_LOG_LENGTH, &log_length); - else { - fprintf(stderr, "printlog: Not a shader or a program\n"); - return; - } - - char* log = (char*)malloc(log_length); - - if (glIsShader(object)) - glGetShaderInfoLog(object, log_length, NULL, log); - else if (glIsProgram(object)) - glGetProgramInfoLog(object, log_length, NULL, log); - - fprintf(stderr, "%s", log); - free(log); -} - -/** - * Compile the shader from file 'filename', with error handling - */ -GLuint create_shader(const char* filename, GLenum type) -{ - const GLchar* source = file_read(filename); - if (source == NULL) { - fprintf(stderr, "Error opening %s: ", filename); perror(""); - return 0; - } - GLuint res = glCreateShader(type); - const GLchar* sources[] = { - // Define GLSL version -#ifdef GL_ES_VERSION_2_0 - "#version 100\n" // OpenGL ES 2.0 -#else - "#version 120\n" // OpenGL 2.1 -#endif - , - // GLES2 precision specifiers -#ifdef GL_ES_VERSION_2_0 - // Define default float precision for fragment shaders: - (type == GL_FRAGMENT_SHADER) ? - "#ifdef GL_FRAGMENT_PRECISION_HIGH\n" - "precision highp float; \n" - "#else \n" - "precision mediump float; \n" - "#endif \n" - : "" - // Note: OpenGL ES automatically defines this: - // #define GL_ES -#else - // Ignore GLES 2 precision specifiers: - "#define lowp \n" - "#define mediump\n" - "#define highp \n" -#endif - , - source }; - glShaderSource(res, 3, sources, NULL); - delete[] source; - - glCompileShader(res); - GLint compile_ok = GL_FALSE; - glGetShaderiv(res, GL_COMPILE_STATUS, &compile_ok); - if (compile_ok == GL_FALSE) { - fprintf(stderr, "%s:", filename); - print_log(res); - glDeleteShader(res); - return 0; - } - - return res; -} - -GLuint create_program(const char *vertexfile, const char *fragmentfile) { - GLuint program = glCreateProgram(); - GLuint shader; - - if(vertexfile) { - shader = create_shader(vertexfile, GL_VERTEX_SHADER); - if(!shader) - return 0; - glAttachShader(program, shader); - } - - if(fragmentfile) { - shader = create_shader(fragmentfile, GL_FRAGMENT_SHADER); - if(!shader) - return 0; - glAttachShader(program, shader); - } - - glLinkProgram(program); - GLint link_ok = GL_FALSE; - glGetProgramiv(program, GL_LINK_STATUS, &link_ok); - if (!link_ok) { - fprintf(stderr, "glLinkProgram:"); - print_log(program); - glDeleteProgram(program); - return 0; - } - - return program; -} - -#ifdef GL_GEOMETRY_SHADER -GLuint create_gs_program(const char *vertexfile, const char *geometryfile, const char *fragmentfile, GLint input, GLint output, GLint vertices) { - GLuint program = glCreateProgram(); - GLuint shader; - - if(vertexfile) { - shader = create_shader(vertexfile, GL_VERTEX_SHADER); - if(!shader) - return 0; - glAttachShader(program, shader); - } - - if(geometryfile) { - shader = create_shader(geometryfile, GL_GEOMETRY_SHADER); - if(!shader) - return 0; - glAttachShader(program, shader); - - glProgramParameteriEXT(program, GL_GEOMETRY_INPUT_TYPE_EXT, input); - glProgramParameteriEXT(program, GL_GEOMETRY_OUTPUT_TYPE_EXT, output); - glProgramParameteriEXT(program, GL_GEOMETRY_VERTICES_OUT_EXT, vertices); - } - - if(fragmentfile) { - shader = create_shader(fragmentfile, GL_FRAGMENT_SHADER); - if(!shader) - return 0; - glAttachShader(program, shader); - } - - glLinkProgram(program); - GLint link_ok = GL_FALSE; - glGetProgramiv(program, GL_LINK_STATUS, &link_ok); - if (!link_ok) { - fprintf(stderr, "glLinkProgram:"); - print_log(program); - glDeleteProgram(program); - return 0; - } - - return program; -} -#else -GLuint create_gs_program(const char *vertexfile, const char *geometryfile, const char *fragmentfile, GLint input, GLint output, GLint vertices) { - fprintf(stderr, "Missing support for geometry shaders.\n"); - return 0; -} -#endif - -GLint get_attrib(GLuint program, const char *name) { - GLint attribute = glGetAttribLocation(program, name); - if(attribute == -1) - fprintf(stderr, "Could not bind attribute %s\n", name); - return attribute; -} - -GLint get_uniform(GLuint program, const char *name) { - GLint uniform = glGetUniformLocation(program, name); - if(uniform == -1) - fprintf(stderr, "Could not bind uniform %s\n", name); - return uniform; -} diff --git a/viewer/shader_utils.h b/viewer/shader_utils.h @@ -1,18 +0,0 @@ -#ifndef _CREATE_SHADER_H -#define _CREATE_SHADER_H -#include <GL/glew.h> - -class shader { -public: - shader(); - ~shader(); - void use(); - - GLint attribute_coord; - GLint uniform_tex; - GLint uniform_color; -private: - GLuint program; -}; - -#endif diff --git a/viewer/text.f.glsl b/viewer/text.f.glsl @@ -1,7 +0,0 @@ -varying vec2 texpos; -uniform sampler2D tex; -uniform vec4 color; - -void main(void) { - gl_FragColor = vec4(1, 1, 1, texture2D(tex, texpos).a) * color; -} diff --git a/viewer/text.v.glsl b/viewer/text.v.glsl @@ -1,7 +0,0 @@ -attribute vec4 coord; -varying vec2 texpos; - -void main(void) { - gl_Position = vec4(coord.xy, 0, 1); - texpos = coord.zw; -} diff --git a/viewer/vert.glsl b/viewer/vert.glsl @@ -1,9 +0,0 @@ -#version 120 - -attribute vec4 coord; -varying vec2 texcoord; - -void main(void) { - gl_Position = vec4(coord.xy, 0, 1); - texcoord = coord.zw; -}