380 likes | 1.12k Views
OPENGL. OpenGL. OpenGL resources: www.opengl.org The Red Book, www.glprogramming.com/red/ Manual pages, www.opengl.org/sdk/docs/man3/. OpenGL. OpenGL core library OpenGL Utility (GLU) OpenGL Utility Toolkit (GLUT) Header files: #include <GL/gl.h> #include <GL/glu.h>
E N D
OpenGL OpenGL resources: • www.opengl.org • The Red Book, www.glprogramming.com/red/ • Manual pages, www.opengl.org/sdk/docs/man3/
OpenGL • OpenGL core library • OpenGL Utility (GLU) • OpenGL Utility Toolkit (GLUT) Header files: • #include <GL/gl.h> • #include <GL/glu.h> • #include <GL/glut.h>
OpenGL #include <GL/glut.h> // (or others, depending on the system in use) void init (void){ glClearColor (1.0, 1.0, 1.0, 0.0); // Set display-window color to white. glMatrixMode (GL_PROJECTION); // Set projection parameters. gluOrtho2D (0.0, 200.0, 0.0, 150.0); } void lineSegment (void){ glClear (GL_COLOR_BUFFER_BIT); // Clear display window. glColor3f (0.0, 0.0, 1.0); // Set line segment color to blue. glBegin (GL_LINES); glVertex2i (180, 15); // Specify line-segment geometry. glVertex2i (10, 145); glEnd ( ); glFlush ( ); // Process all OpenGL routines as quickly as possible. } void main (int argc, char** argv){ glutInit (&argc, argv); // Initialize GLUT. glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); // Set display mode. glutInitWindowPosition (50, 100); // Set top-left display-window position. glutInitWindowSize (400, 300); // Set display-window width and height. glutCreateWindow ("An Example OpenGL Program"); // Create display window. init ( ); // Execute initialization procedure. glutDisplayFunc (lineSegment); // Send graphics to display window. glutMainLoop ( ); // Display everything and wait. }
OpenGL Point Functions • glVertex*( ); * : 2, 3, 4 i (integer) s (short) f (float) d (double) Ex: glBegin(GL_POINTS); glVertex2i(50, 100); glEnd(); Ex: int p1[ ]={50, 100}; glBegin(GL_POINTS); glVertex2iv(p1); glEnd();
OpenGL Line Functions • GL_LINES • GL_LINE_STRIP • GL_LINE_LOOP Ex: glBegin(GL_LINES); glVertex2iv(p1); glVertex2iv(p2); glEnd();
OpenGL glBegin(GL_LINES);GL_LINES GL_LINE_STRIP glVertex2iv(p1); glVertex2iv(p2); glVertex2iv(p3); glVertex2iv(p4); glVertex2iv(p5); glEnd(); GL_LINE_LOOP p3 p3 p5 p1 p1 p2 p4 p2 p4 p3 p5 p1 p2 p4
OpenGL glBegin(GL_POINTS); GL_POINTS glVertex2iv(p1); glVertex2iv(p2); glVertex2iv(p3); glVertex2iv(p4); glVertex2iv(p5); glEnd(); glPointSize(size); size: 1,2,… Ex: glPointSize(2.0); // 2x2 pixels p3 p5 p1 p2 p4
OpenGL Polygon Functions glRect*(x1, y1, x2, y2); • i (integer) • s (short) • f (float) • d (double) • v (vector) Ex: glRecti(200, 100, 50, 250); Ex: int v1[ ]={200, 100}; int v2[ ]={50, 250}; glRectiv(v1, v2); (50, 250) (200, 100)
OpenGL Ex: glBegin (GL_POLYGON); glVertex2iv(p1); glVertex2iv(p2); glVertex2iv(p3); glVertex2iv(p4); glVertex2iv(p5); glVertex2iv(p6); glEnd(); p6 p5 p1 p4 p2 p3 GL_POLYGON
OpenGL Ex: glBegin (GL_TRIANGLES); glVertex2iv(p1); glVertex2iv(p2); glVertex2iv(p3); glVertex2iv(p4); glVertex2iv(p5); glVertex2iv(p6); glEnd(); p6 p5 p1 p4 p2 p3 GL_TRIANGLES
OpenGL Ex: glBegin (GL_TRIANGLES); glVertex2iv(p1); glVertex2iv(p2); glVertex2iv(p6); glVertex2iv(p3); glVertex2iv(p4); glVertex2iv(p5); glEnd(); p6 p5 p1 p4 p2 p3 GL_TRIANGLES p6 p5 p6 p5 p1 p4 p1 p4 p2 p3 p2 p3 GL_TRIANGLE_STRIP GL_TRIANGLE_FAN
OpenGL Ex: glBegin (GL_QUADS); glVertex2iv(p1); glVertex2iv(p2); glVertex2iv(p3); glVertex2iv(p4); glVertex2iv(p5); glVertex2iv(p6); glVertex2iv(p7); glVertex2iv(p8); glEnd(); p8 p1 p4 p5 p7 p6 p3 p2 GL_QUADS GL_QUAD_STRIP
OpenGL RGB colors
OpenGL Color Functions glClearColor(r, g, b, a); 0.0 ≤ r, g, b, a ≤ 1.0 specifies the color for color buffers glClear(GL_COLOR_BUFFER_BIT); applies the clear color to the color buffers Ex: glClearColor(1.0, 1.0, 1.0, 0.0); // White glColor(GL_COLOR_BUFFER_BIT);
OpenGL Color Functions glColor3f(r, g, b); 0.0 ≤ r, g, b ≤ 1.0 Ex: glColor3f(1.0, 0.0, 0.0); // Red glColor3ub(r, g, b); 0 ≤ r, g, b ≤ 255 Ex: glColor3ub(255, 0, 0); // Red
OpenGL Reshape Function glutReshapeFunc(func); Ex: glutReshapeFunc(my_reshape_func);
OpenGL – Transformations Matrix Operations glMatrixMode routine: • Projection mode (GL_PROJECTION) • Modelview mode (GL_MODELVIEW) • Texture mode • Color mode
OpenGL – Transformations Modelview Mode glMatrixMode(GL_MODELVIEW); designates 4x4 modelview matrix as the current matrix. glLoadIdentity(); assigns the identity matrix to the current matrix.
OpenGL – Transformations Translate glTranslatef (tx, ty, tz); Scale glScalef (sx, sy, sz); Rotate glRotatef (theta, vx, vy, vz);
OpenGL glColor3f (0.0, 0.0, 1.0); // blue glRecti(0,0,80,40); glFlush ( ); Modelview Matrix I
OpenGL glColor3f (0.0, 0.0, 1.0); // blue glRecti(0,0,80,40); glFlush ( ); Modelview Matrix I glColor3f (1.0, 0.0, 0.0); // red glTranslatef(10.0, 10.0, 0.0); glRecti(0,0,80,40); glFlush ( ); I.T
OpenGL glColor3f (0.0, 0.0, 1.0); // blue glRecti(0,0,80,40); glFlush ( ); Modelview Matrix I glColor3f (1.0, 0.0, 0.0); // red glTranslatef(10.0, 10.0, 0.0); glRecti(0,0,80,40); glFlush ( ); I.T glColor3f (1.0, 0.0, 0.0); // red glScalef(2.0, 2.0, 0.0); glRecti(0,0,80,40); glFlush ( ); I.T.S
OpenGL glColor3f (0.0, 0.0, 1.0); // blue glRecti(0,0,80,40); glFlush ( ); Modelview Matrix I glColor3f (1.0, 0.0, 0.0); // red glTranslatef(10.0, 10.0, 0.0); glRecti(0,0,80,40); glFlush ( ); I.T glColor3f (1.0, 0.0, 0.0); // red glScalef(2.0, 2.0, 0.0); glRecti(0,0,80,40); glFlush ( ); I.T.S glColor3f (0.0, 1.0, 0.0); // green glRotatef(20.0, 0.0, 0.0, 1.0); glRecti(0,0,80,40); glFlush ( ); I.T.S.R
OpenGL – Transformations Matrix Stack glPushMatrix (); glPopMatrix ();
OpenGL glColor3f (0.0, 0.0, 1.0); // blue glRecti(0,0,80,40); glFlush ( ); I glColor3f (1.0, 0.0, 0.0); // red glTranslatef(10.0, 10.0, 0.0); glRecti(0,0,80,40); glPushMatrix(); glFlush ( ); I.T I.T glColor3f (1.0, 0.0, 0.0); // red glScalef(2.0, 2.0, 0.0); glRecti(0,0,80,40); glFlush ( ); I.T.S I.T glColor3f (0.0, 1.0, 0.0); // green glPopMatrix(); glRotatef(20.0, 0.0, 0.0, 1.0); glRecti(0,0,80,40); glFlush ( ); I.T.R
OpenGL – 2D Viewing Clipping Window gluOrtho2D (xwmin, xwmax, ywmin, ywmax); float or double Viewport Function glViewport (xvmin, yvmin, vpWidth, vpHeight); integer Window (xwmax, ywmax) Viewport vpHeight vpWidth (xvmin, yvmin) (xwmin, ywmin)
OpenGL – 2D Viewing Create Display Window • glutInit (&argc, &argv) • glutInitWindowPosition (xTopLeft, yTopLeft) • glutInitWindowSize (width, height) • windowID=glutCreateWindow (“title”) • glutDestroyWindow (windowID) Display Window Mode • glutInitDisplayMode (mode) Ex: glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
OpenGL – 2D Viewing Display Functions • glutDisplayFunction (dFunc) dFunc (callback function) describes what is to be displayed in the current window • glutInitPostRedisplay () Indicates that the contents of the current display window should be renewed • glutIdleFunc (iFunc) iFunc is executed when there are no other events for the system to process • glutMainLoop ()
yw yv xv V zv P0 xw zw OpenGL – 3D Viewing • glMatrixMode (GL_MODELVIEW) • gluLookAt (x0, y0, z0, xref, yref, zref, Vx, Vy, Vz) Designates the origin of the viewing reference frame as, • the world coordinate position P0=(x0, y0, z0) • the reference position Pref=(xref, yref, zref) and • the viewup vector V=(Vx, Vy, Vz) • double-precision, floating-point values N Pref
yw yv V xv P0 zv xw zw OpenGL – 3D Viewing • gluLookAt (x0, y0, z0, xref, yref, zref, Vx, Vy, Vz) Default parameters are: • P0=(0,0,0) • Pref=(0,0,-1) • V=(0,1,0) Pref
OpenGL – 3D Viewing Projection • glMatrixMode (GL_PROJECTION) Orthogonal Projection • gluOrtho (xwmin, xwmax, ywmin, ywmax, dnear, dfar) Perspective Projection • gluPerspective (theta, aspect, dnear, dfar) • glFrustum (xwmin, xwmax, ywmin, ywmax, dnear, dfar)