RendererGL::~RendererGL()
{
- destroy_shaders();
}
-void RendererGL::draw() const
+bool RendererGL::load_shader_program(const char *vfname, const char *ffname)
{
- /* 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; i<scene->objects.size(); ++i) {
- draw_object(scene->objects[i]);
- }
+ return true;
}
-
-bool RendererGL::init_shaders(const char *vfname, const char *ffname)
+void RendererGL::use_shader_program()
{
- 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()
+bool RendererGL::create()
{
- if(sprog) {
- delete sprog;
- sprog = 0;
- }
+ return true;
}
void RendererGL::draw_object(Object *object) const
{
- object->material->dtex->bind();
-
-
+}
- object->mesh->draw();
+void RendererGL::draw() const
+{
}
\ No newline at end of file