11 #include "shader_manager.h"
25 bool Renderer::create()
27 if(!(sprog = sdr_man->create_shader_program("default.v.glsl", "default.f.glsl"))) {
34 void Renderer::draw() const
39 glClearColor(0.5, 0.5, 0.5, 1);
40 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
47 for(size_t i=0; i<scene->objects.size(); i++) {
48 draw_object(scene->objects[i]);
52 void Renderer::draw_object(Object *object) const
54 Material *m = object->material;
57 if((diff_loc = sprog->get_uniform_location("diffuse")) != -1) {
58 sprog->set_uniformf(diff_loc, m->diffuse.x, m->diffuse.y, m->diffuse.z, 1);
62 if((spec_loc = sprog->get_uniform_location("specular")) != -1) {
63 sprog->set_uniformf(spec_loc, m->specular.x, m->specular.y, m->specular.z, 1);
65 /* specular exponent */
67 if((shin_loc = sprog->get_uniform_location("shininess")) != -1) {
68 sprog->set_uniformf(shin_loc, m->shininess);
74 // Mat4 mmviewproj = mprojection * camera->get_view_matrix() * object->transform;
75 Mat4 mmviewproj = object->transform * camera->get_view_matrix() * mprojection;
76 // printf("\nmatrices:\n");
77 // mprojection.print();
78 // camera->get_view_matrix().print();
79 // object->transform.print();
80 // mmodelview.print();
83 if((mmviewproj_loc = sprog->get_uniform_location("mmviewproj")) != -1) {
84 sprog->set_uniform_matrix(mmviewproj_loc, mmviewproj);
87 Mat4 mview = camera->get_view_matrix(); //* object->transform;
89 if((mview_loc = sprog->get_uniform_location("mview")) != -1) {
90 sprog->set_uniform_matrix(mview_loc, mview);
93 object->mesh->update_vertex_data();