+#include "global.h"
+#include "morph_renderer.h"
+#include "scene.h"
+#include "shader.h"
+#include "shader_manager.h"
+
+MorphRenderer::MorphRenderer()
+{
+ scene = 0;
+ camera = 0;
+ sprog = 0;
+
+ /* we won't use them */
+ skytex = 0;
+ dskytex = 0;
+}
+
+MorphRenderer::~MorphRenderer()
+{
+}
+
+bool MorphRenderer::create()
+{
+ if(!(sprog = sdr_man->create_shader_program("morphing.v.glsl", "morphing.f.glsl"))) {
+ return false;
+ }
+
+ /* getting material uniform locations: diffuse, specular, specular exponent (strength) */
+
+ diff_loc = sprog->get_uniform_location("diffuse");
+ spec_loc = sprog->get_uniform_location("specular");
+ shin_loc = sprog->get_uniform_location("shininess");
+
+ /* uniform locations for matrices */
+
+ mmviewproj_loc = sprog->get_uniform_location("mmviewproj");
+ mview_loc = sprog->get_uniform_location("mview");
+
+ return true;
+}
+
+void MorphRenderer::draw() const
+{
+ if(!camera || !scene)
+ return;
+
+ if(!sprog->link())
+ return;
+
+ sprog->use();
+
+ for(size_t i=0; i<scene->objects.size(); i++) {
+ draw_object(scene->objects[i]);
+ }
+}
\ No newline at end of file