X-Git-Url: https://eleni.mutantstargoat.com/git/?p=demo;a=blobdiff_plain;f=src%2Fopengl%2Frenderer-gl.cc;h=6eaafda62531aff5f5fd00a7421eb76a90812691;hp=5b81be39ee643e45cbf29a6b121666bb2da312e0;hb=fcd6773bc770425ede4b47a84eef7cc78342542c;hpb=0da7a98f74d00bfa6cf0d47fd7cf0f687eeba5f6 diff --git a/src/opengl/renderer-gl.cc b/src/opengl/renderer-gl.cc index 5b81be3..6eaafda 100644 --- a/src/opengl/renderer-gl.cc +++ b/src/opengl/renderer-gl.cc @@ -24,64 +24,24 @@ RendererGL::RendererGL(ShaderProgram *sprog, Scene *scene, Camera *camera) RendererGL::~RendererGL() { - destroy_shaders(); } -void RendererGL::draw() const +bool RendererGL::create() { - /* use shaders */ - if(!sprog) { - fprintf(stderr, "No active shaders found. Using default.\n"); - glUseProgram(0); - } - else { - sprog->use(); - } - - /* draw all scene components */ - for(size_t i=0; iobjects.size(); ++i) { - draw_object(scene->objects[i]); - } -} - - -bool RendererGL::init_shaders(const char *vfname, const char *ffname) -{ - if(sprog) - delete sprog; - - sprog = new ShaderProgramGL; - if(!sprog->load(vfname, ffname)) - goto error; - - if(!sprog->link()) - goto error; - - sprog->use(); - - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - return true; - -error: - destroy_shaders(); - return false; } -void RendererGL::destroy_shaders() +void RendererGL::draw_object(Object *object) const { - if(sprog) { - delete sprog; - sprog = 0; - } + object->mesh->draw(); } -void RendererGL::draw_object(Object *object) const +void RendererGL::draw() const { - object->material->dtex->bind(); - - - - object->mesh->draw(); + //TODO + /* set state, uniforms */ + sprog->use(); + for(size_t i=0; iobjects.size(); i++) { + draw_object(scene->objects[i]); + } } \ No newline at end of file