dirtyburger

02-19-2012, 08:18 PM

Hi,

Hope this is the right place to ask this kind of question.

I'm doing an exercise where I created a cube out of several quads. I then created a projection matrix (according to the exercise description) looking like this:

float n = 1.0, f = 10.0; // near and far clipping planes

float a = (f + n) / (f - n);

float b = 2 * f * n / (f - n);

GLfloat projectionMatrix[4][4] = {

{1.0, 0.0, 0.0, 0.0},

{0.0, 1.0, 0.0, 0.0},

{0.0, 0.0, -a, -b},

{0.0, 0.0,-1.0, 0.0}};

I added a modelview matrix, rotating the cube and translating it along the z-axis:

GLfloat modelviewMatrix[4][4] = {

{cos(time) , 0.0, sin(time), 0.0},

{0.0 , 1.0, 0.0 , 0.0},

{-sin(time), 0.0, cos(time), -4.0},

{0.0 , 0.0, 0.0 , 1.0}};

I sent both the projection and the modelview matrices to the vertex shader where I multiply them with the vertice positions. This was working perfectly fine, until I added GLM. Now I'm supposed to change the modelview matrix to a glm::mat4 matrix and compute the translation and rotation using glm::translate and glm::rotate. The problem is, as soon as I even use glm::translate my cube disappears, never to be seen again.

Obviously I'm doing something wrong. I tried just translating at first:

glm::mat4 modelviewMatrix = glm::translate(

glm::mat4(1.0f),

glm::vec3(0.0f, 0.0f, -4.0f));

I guess this is not equivalent to the translation part of the previous matrix? Btw, the projection matrix has to remain as it is.

Thankful for all hints!

Cheers!

P.S. I changed the glUniformMatrix4fv call to use glm::value_ptr(modelviewMatrix) instead of modelviewMatrix[0]

Hope this is the right place to ask this kind of question.

I'm doing an exercise where I created a cube out of several quads. I then created a projection matrix (according to the exercise description) looking like this:

float n = 1.0, f = 10.0; // near and far clipping planes

float a = (f + n) / (f - n);

float b = 2 * f * n / (f - n);

GLfloat projectionMatrix[4][4] = {

{1.0, 0.0, 0.0, 0.0},

{0.0, 1.0, 0.0, 0.0},

{0.0, 0.0, -a, -b},

{0.0, 0.0,-1.0, 0.0}};

I added a modelview matrix, rotating the cube and translating it along the z-axis:

GLfloat modelviewMatrix[4][4] = {

{cos(time) , 0.0, sin(time), 0.0},

{0.0 , 1.0, 0.0 , 0.0},

{-sin(time), 0.0, cos(time), -4.0},

{0.0 , 0.0, 0.0 , 1.0}};

I sent both the projection and the modelview matrices to the vertex shader where I multiply them with the vertice positions. This was working perfectly fine, until I added GLM. Now I'm supposed to change the modelview matrix to a glm::mat4 matrix and compute the translation and rotation using glm::translate and glm::rotate. The problem is, as soon as I even use glm::translate my cube disappears, never to be seen again.

Obviously I'm doing something wrong. I tried just translating at first:

glm::mat4 modelviewMatrix = glm::translate(

glm::mat4(1.0f),

glm::vec3(0.0f, 0.0f, -4.0f));

I guess this is not equivalent to the translation part of the previous matrix? Btw, the projection matrix has to remain as it is.

Thankful for all hints!

Cheers!

P.S. I changed the glUniformMatrix4fv call to use glm::value_ptr(modelviewMatrix) instead of modelviewMatrix[0]