Opengl Transformation: Jian-Liang Lin 2002
Opengl Transformation: Jian-Liang Lin 2002
Jian-Liang Lin
2002
Transformation -1
Transformation -2
There are three matrix stacks in
OpenGL architecture
– MODELVIEW, PROJECTION, TEXTURE
– glMatrixMode( GLenum mode );
• mode: GL_MODELVIEW, GL_PROJECTION,
GL_TEXTURE
– Current matrix mode is also a OpenGL
state variable.
Transformation -3
Matrix Manipulation
– glLoadIdentity();
– glLoadMatrix{f,d}( const TYPE* m );
– glMultMatrix{f,d}( const TYPE* m );
– glPushMatrix();
– glPopMatrix();
• Stack operation of matrix is very useful for
constructing a hierarchical structures.
• Ex: Render a car with four wheels.
Transformation -4
OpenGL built-in transformation:
– glTranslate{f,d}( TYPE x, TYPE, y, TYPE z );
• Multiply a translation matrix into current matrix stack
– glRotate{f,d}( TYPE angle, TYPE x, TYPE y, TYPE
z );
• Multiply a rotation matrix about an arbitrary axis into
current matrix stack
– glScale{f,d}( TYPE x, TYPE y, TYPE z );
• Multiply a scaling matrix into current matrix stack
Transformation -5
Viewing transformation
– Choose your viewing system
• Center-orientation-up system
– Apply gluLookAt Utility routine.
» gluLookAt( cx, cy, cz, cx+ox, cy+oy, cz+oz, upx, upy,
upz );
» ( cx, cy, cz ) is the center of the camera
» ( ox, oy, oz ) is the orientation vector of the camera
» ( upx, upy, upz ) is the up vector of the camera
• Polar coordinate system
– Combine translation and two rotation.
•…
Transformation -6
Projection transformation: Perspective
projection
– glFrustum( GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top,
GLdouble near, GLdouble far );
Transformation -7
– gluPerspective( GLdouble fovy,
GLdouble aspect, GLdouble near,
GLdouble far );
Transformation -8
Projection transformation: Orthogonal projection
– glOrtho( GLdouble left, GLdouble right, GLdouble bottom,
GLdouble top, GLdouble near, GLdouble far );