1 / 32

OPENGL

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>

cid
Download Presentation

OPENGL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OPENGL

  2. OpenGL OpenGL resources: • www.opengl.org • The Red Book, www.glprogramming.com/red/ • Manual pages, www.opengl.org/sdk/docs/man3/

  3. 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>

  4. 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. }

  5. 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();

  6. OpenGL Line Functions • GL_LINES • GL_LINE_STRIP • GL_LINE_LOOP Ex: glBegin(GL_LINES); glVertex2iv(p1); glVertex2iv(p2); glEnd();

  7. 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

  8. 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

  9. 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)

  10. 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

  11. 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

  12. 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

  13. 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

  14. OpenGL RGB colors

  15. 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);

  16. 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

  17. OpenGL Reshape Function glutReshapeFunc(func); Ex: glutReshapeFunc(my_reshape_func);

  18. OpenGL – Transformations Matrix Operations glMatrixMode routine: • Projection mode (GL_PROJECTION) • Modelview mode (GL_MODELVIEW) • Texture mode • Color mode

  19. OpenGL – Transformations Modelview Mode glMatrixMode(GL_MODELVIEW); designates 4x4 modelview matrix as the current matrix. glLoadIdentity(); assigns the identity matrix to the current matrix.

  20. OpenGL – Transformations Translate glTranslatef (tx, ty, tz); Scale glScalef (sx, sy, sz); Rotate glRotatef (theta, vx, vy, vz);

  21. OpenGL glColor3f (0.0, 0.0, 1.0); // blue glRecti(0,0,80,40); glFlush ( ); Modelview Matrix I

  22. 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

  23. 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

  24. 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

  25. OpenGL – Transformations Matrix Stack glPushMatrix (); glPopMatrix ();

  26. 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

  27. 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)

  28. 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);

  29. 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 ()

  30. 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

  31. 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

  32. 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)

More Related