Tucano  0.1
A library for rapid prototyping with modern OpenGL and GLSL
normalmap.hpp
Go to the documentation of this file.
1 
23 #ifndef __NORMALMAP__
24 #define __NORMALMAP__
25 
26 #include <tucano/tucano.hpp>
27 
28 namespace Tucano
29 {
30 namespace Effects
31 {
32 
36 class NormalMap : public Tucano::Effect
37 {
38 
39 private:
40 
43 
44 public:
45 
49  NormalMap (void) {}
50 
54  virtual void initialize (void)
55  {
56  // searches in default shader directory (/shaders) for shader files normalmap.(vert,frag,geom,comp)
57  loadShader(normalmap_shader, "normalmap");
58  }
59 
65  virtual void render (Tucano::Mesh& mesh, const Tucano::Trackball& cameraTrackball)
66  {
67  Eigen::Vector4f viewport = cameraTrackball.getViewport();
68  glViewport(viewport[0], viewport[1], viewport[2], viewport[3]);
69 
70  normalmap_shader.bind();
71 
72  // sets all uniform variables for the phong shader
73  normalmap_shader.setUniform("projectionMatrix", cameraTrackball.getProjectionMatrix());
74  normalmap_shader.setUniform("modelMatrix", mesh.getModelMatrix());
75  normalmap_shader.setUniform("viewMatrix", cameraTrackball.getViewMatrix());
76 
77  mesh.setAttributeLocation(normalmap_shader);
78 
79  glEnable(GL_DEPTH_TEST);
80  mesh.render();
81  glDisable(GL_DEPTH_TEST);
82 
83  normalmap_shader.unbind();
84  }
85 
86 };
87 }
88 
89 }
90 
91 #endif
Renders a mesh using a normal map as colors.
Definition: normalmap.hpp:36
void getViewMatrix(GLdouble *matrix)
Return the modelview matrix as a GLdouble array.
Definition: camera.hpp:126
void getProjectionMatrix(GLdouble *matrix)
Return the projection matrix as a GLdouble array.
Definition: camera.hpp:142
Definition: bufferobject.hpp:34
Trackball class for manipulating a camera.
Definition: trackball.hpp:79
A Shader object represents one GLSL program.
Definition: shader.hpp:45
virtual void render(Tucano::Mesh &mesh, const Tucano::Trackball &cameraTrackball)
Render the mesh given a camera trackball.
Definition: normalmap.hpp:65
Tucano::Shader normalmap_shader
NormalMap Shader.
Definition: normalmap.hpp:42
void unbind(void)
Disables the shader program.
Definition: shader.hpp:1184
virtual Shader * loadShader(string shader_name)
Loads a shader by filename, initializes it, and inserts in shaders list.
Definition: effect.hpp:73
virtual void render(void)
Render the mesh triangles. The method binds the buffers, calls the method to render triangles...
Definition: mesh.hpp:756
Eigen::Affine3f getModelMatrix(void) const
Returns the model matrix.
Definition: model.hpp:103
NormalMap(void)
Default constructor.
Definition: normalmap.hpp:49
void bind(void)
Enables the shader program for usage.
Definition: shader.hpp:1176
A common Mesh, usually containing triagles or points.
Definition: mesh.hpp:194
void setAttributeLocation(Shader *shader)
Automatically sets the attribute locations for a given Shader.
Definition: mesh.hpp:541
Eigen::Vector4f getViewport(void) const
Returns the viewport coordinates.
Definition: camera.hpp:246
The Effect class is a holder for Shaders. It is completely optional, but is contains a few methods fo...
Definition: effect.hpp:43
virtual void initialize(void)
Load and initialize shaders.
Definition: normalmap.hpp:54
void setUniform(GLint location, GLint a, GLint b, GLint c, GLint d)
Sets an uniform integer 4D vector (ivec4) given a location and the vector values. ...
Definition: shader.hpp:1258