• Advertisement
Sign in to follow this  

How can I apply a rotatio matrix to a model matrix

This topic is 1864 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

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)
// I call to SetEulerRotation from here
setEulerRotation(90.0f * getParent()->getEngine()->deltaTime, glm::vec3(0,1,0));
void Cube::Draw(void)

//I want apply the rotation matrix to model matrix here.
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
Sign in to follow this  

  • Advertisement