X-Git-Url: https://eleni.mutantstargoat.com/git/?a=blobdiff_plain;f=src%2Fshader.cc;h=2e530ecff9dd667b4420e4f759b388018fbeb378;hb=86c912d603be75ac8b2fdb2229f1696e9c0c01d9;hp=3bd46e2edcefc88d0801b50cb24adecf554c3e62;hpb=369d75c73bf926a6dbcf4d740c8664bbb401602a;p=demo diff --git a/src/shader.cc b/src/shader.cc index 3bd46e2..2e530ec 100644 --- a/src/shader.cc +++ b/src/shader.cc @@ -1,8 +1,7 @@ #include #include -#include "shader.h" -ShaderProgram *current_program; +#include "shader.h" Shader::Shader() {} Shader::~Shader() @@ -10,7 +9,7 @@ Shader::~Shader() type = SDR_UNKNOWN; } -bool Shader::load(const char *fname, SType type) +bool Shader::load(const char *fname, ShaderType type) { switch(type) { case SDR_VERTEX: @@ -26,24 +25,17 @@ bool Shader::load(const char *fname, SType type) unsigned int fsz; if(!(fp = fopen(fname, "rb"))) { - fprintf(stderr, "Failed to open shader: %s.\n", fname); - + fprintf(stderr, "Failed to open shader: %s\n", fname); return false; } fseek(fp, 0, SEEK_END); fsz = ftell(fp); rewind(fp); - char *buf; - if(!(buf = new char[fsz + 1])) { - fprintf(stderr, "Failed to allocate %u buffers.\n", fsz + 1); - fclose(fp); - - return false; - } + char *buf = new char[fsz + 1]; if(fread(buf, 1, fsz, fp) < fsz) { - fprintf(stderr, "Failed to read shader: %s.\n", fname); + fprintf(stderr, "Failed to read shader: %s\n", fname); delete buf; fclose(fp); @@ -52,14 +44,16 @@ bool Shader::load(const char *fname, SType type) buf[fsz] = '\0'; fclose(fp); - create(buf, fsz, fname); - return true; + return create(buf, fsz, fname); } -ShaderProgram::ShaderProgram() +ShaderType Shader::get_type() { - current_program = 0; + return type; +} +ShaderProgram::ShaderProgram() +{ int len = sizeof shaders / sizeof *shaders; for(int i=0; itype < sizeof shaders / sizeof *shaders); - shaders[sdr->type] = sdr; -} - -ShaderProgram *get_current_program() -{ - return current_program; -} \ No newline at end of file