Sign in to follow this  
Hector San Roman Lanza

How can I apply a rotatio matrix to a model matrix

Recommended Posts

I have the next code:

Mesh* Cube::mesh;
Shader* Cube::shader;

GLuint Cube::ShaderIds[3] = { 0 },

glm::mat4 Cube::ModelMatrix = glm::mat4(1.0); //IDENTITY MATRIX

GLuint Cube::ModelMatrixUniformLocation,


glm::vec3 Cube::getPosition(void)
return position;
void Cube::setPosition(glm::vec3 value)
position = value;

glm::vec3 Cube::getEulerRotation(void)
return MatToVec3(rotationMatrix);
void Cube::setEulerRotation(float angle, glm::vec3 axis)
rotationMatrix = glm::rotate(rotationMatrix, angle, axis);

void Cube::Initialize(void)
ModelMatrix = glm::mat4(1.0);

void Cube::Load(void)
mesh = getParent()->getEngine()->content.Load<Mesh>("Models/cube2.obj");

shader = getParent()->getEngine()->content.Load<Shader>("Shaders/simpleshader.glsl");
//Obtenemos las uniform locations de las matrices y las texturas
ModelMatrixUniformLocation = shader->GetUniformLocation("ModelMatrix");
getParent()->getEngine()->ViewMatrixUniformLocation = shader->GetUniformLocation("ViewMatrix");
getParent()->getEngine()->ProjectionMatrixUniformLocation = shader->GetUniformLocation("ProjectionMatrix");
ExitOnGLError("ERROR: Could not get the uniform locations");

// Cargamos una textura
Texture* texture0 = getParent()->getEngine()->content.Load<Texture>("Textures/cube.bmp");
Tex0Loc = shader->GetUniformLocation("texture0"); //obtenemos la localizacion del parametro texture0
ExitOnGLError("Error: Could not load texture");

void Cube::Update(void)
[b] // I call to SetEulerRotation from here[/b]
setEulerRotation(90.0f * getParent()->getEngine()->deltaTime, glm::vec3(0,1,0));
void Cube::Draw(void)

[b] //I want apply the rotation matrix to model matrix here.[/b]
ModelMatrix = glm::scale(

//ModelMatrix = glm::rotate(ModelMatrix, 90.0f * getParent()->getEngine()->deltaTime, glm::vec3(0,1,0));
// Apply the model matrix

glUniformMatrix4fv(ModelMatrixUniformLocation, 1, GL_FALSE, glm::value_ptr(ModelMatrix));
ExitOnGLError("ERROR: Could not set the model matrix");

// Apply the view matrix
Camera *cam = (Camera*)getParent()->getEngine()->services.GetService(0);
if(cam == NULL)
ExitOnError("ERROR: Camara no colocada en el World");
glUniformMatrix4fv(getParent()->getEngine()->ViewMatrixUniformLocation, 1, GL_FALSE, glm::value_ptr(cam->getView()));
ExitOnGLError("ERROR: Could not set the view matrix");

// Aplicamos la matrix de proyeccion
glUniformMatrix4fv(getParent()->getEngine()->ProjectionMatrixUniformLocation, 1, GL_FALSE, glm::value_ptr(cam->getProjection()));
ExitOnGLError("ERROR: Could not set the projection matrix");

glUniform1i(Tex0Loc, 0);

I want to apply the rotationMatrix (set in 'SetEulerRotation' method) to the ModelMatrix in the Draw method, but i don´t know how it does.
Can anybody help me?

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this