# noob question - modelview and projection matrices

Sorry, but I must know the answer to this and tried to google alot, without finding the exact answer…

Q: Why does this work?

glMatrixMode(GL_PROJECTION)
aspect = float(width)/float(height)
gluPerspective(40., aspect, 0.1, 40.)

glMatrixMode(GL_MODELVIEW)
gluLookAt(0,0,10,  0,0,0,  0,1,0)

When this doesn’t work?

glMatrixMode(GL_PROJECTION)
aspect = float(width)/float(height)
gluPerspective(40., aspect, 0.1, 40.)

glMatrixMode(GL_MODELVIEW)
gluLookAt(0,0,10,  0,0,0,  0,1,0)

I thought the projection and the modelview matrices have absolutely nothing to do with each other, so why does the order of the operations/matrix stuff matter ???

Why doesn’t it give the same result ???

Noob question, I know… But I don’t understand this…

they look like pretty the same to me.

Huh? I must be blind, but the two look like literally the same code, where is the difference hiding?
BTW, what does “it doesn’t work” mean here? That is usually not a very useful problem description (i.e. one that makes a good answer possible), take a look at Forum Posting Guidelines for suggestions how to improve it.

Assuming the second code block was meant to look like

glMatrixMode(GL_MODELVIEW)
gluLookAt(0,0,10,  0,0,0,  0,1,0)

glMatrixMode(GL_PROJECTION)
aspect = float(width)/float(height)
gluPerspective(40., aspect, 0.1, 40.)

I’d then guess the problem is that you leave the projection matrix active, so any calls to glTranslate, glRotate, etc. affect your projection matrix, which is usually not what you want.

Also, you most likely want to reset the model-view matrix to identity before calling gluLookAt:

glMatrixMode(GL_PROJECTION)
aspect = float(width)/float(height)
gluPerspective(40., aspect, 0.1, 40.)

glMatrixMode(GL_MODELVIEW)
gluLookAt(0,0,10,  0,0,0,  0,1,0)

Since gluLookAt simply multiplies the current matrix by the “look at” matrix, and if you don’t reset it, the transformation will stack each time you render.

ARRGH!

Thanks a lot, both of you! You’re both right… Ofcourse it was a really stupid copy/paste error I made, I had to remove a lot of comments so my mind was focused on removing comments instead of showing what I meant to show… And what I meant to show was:

glMatrixMode(GL_PROJECTION)
aspect = float(width)/float(height)
gluPerspective(40., aspect, 0.1, 40.)

glMatrixMode(GL_MODELVIEW)
gluLookAt(0,0,10,  0,0,0,  0,1,0)

When this doesn’t work?

glMatrixMode(GL_MODELVIEW)
gluLookAt(0,0,10,  0,0,0,  0,1,0)

glMatrixMode(GL_PROJECTION)