11 #include "shader_manager.h"
24 bool Renderer::create()
26 if(!(sprog = sdr_man->create_shader_program("default.v.glsl", "default.f.glsl"))) {
33 void Renderer::draw() const
39 if((mview_loc = sprog->get_uniform_location("mview")) != -1) {
40 sprog->set_uniform_matrix(mview_loc, camera->get_view_matrix());
44 if((mproj_loc = sprog->get_uniform_location("mproj")) != -1) {
45 sprog->set_uniform_matrix(mproj_loc, mprojection);
48 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
49 camera->set_orbit_params(phi, theta, dist);
51 for(size_t i=0; i<scene->objects.size(); i++) {
52 draw_object(scene->objects[i]);
56 void Renderer::draw_object(Object *object) const
58 Material *m = object->material;
61 if((diff_loc = sprog->get_uniform_location("diffuse")) != -1) {
62 sprog->set_uniformf(diff_loc, m->diffuse.x, m->diffuse.y, m->diffuse.z);
66 if((spec_loc = sprog->get_uniform_location("specular")) != -1) {
67 sprog->set_uniformf(spec_loc, m->specular.x, m->specular.y, m->specular.z);
69 /* specular exponent */
71 if((shin_loc = sprog->get_uniform_location("shininess")) != -1) {
72 sprog->set_uniformf(shin_loc, m->shininess);