100 likes | 206 Vues
This guide provides a comprehensive overview of OpenGL programming fundamentals, specifically focusing on window creation, event handling, and rendering objects. You'll learn how to use GLUT library functions to initialize a window, register event handlers, and define various geometric shapes such as points, lines, and polygons. The tutorial also covers techniques for specifying object colors and materials, performing transformations using matrices, setting up the camera, and mapping the camera's view onto the window. Ideal for beginners in computer graphics.
E N D
Computer Graphics(fall 2009) School of Computer Science University of Seoul
OpenGL Program • How can we create a window? • How can we handle the events? • What kind of objects can we render? • How can we define/describe/specify the objects? • How can we specify the material/color of the objects? • How can we transform the objects? • How can we set the camera? • How can we “map” what the camera sees onto the window?
How can we create a window? • Using GLUT library functions • glutInit • Initialize GLUT • glutInitDisplayMode • Set framebuffer • glutInitWindowSize, glutInitWindowPosition and glutCreateWindow • Create a window
How can we handle the events? • Using GLUT library • glut*Func() • Register event handler • Ex: glutDisplayFunc
What kind of objects can we render? • Points • Lines, line strips, line loops • Triangles, quadrilaterals, polygons • Triangle strips, triangle fans, quad strips • Simple & convex polygons only • More complex objects supported by GLU & GLUT
How can we define / describe / specify the objects? • glBegin(…) ~ glEnd() • Specify vertices using glVertex*()
How can we specify the material/color of the objects? • glMaterial*() • glColor*() • Indexed color • Current states
How can we transform the objects? • Specify the transformations as 4x4 matrices (affine transformations) • Current state • Kept in the “Modelview” matrix stack • Hierarchical transformation supported • Special functions for transformations: glTranslate*(), glRotate*(), glScale*()
How can we set the camera? • Represented as a 4x4 matrix • Current state • Kept in the “projection” matrix stack • Special functions: glOrtho*(), glFrustum() • More functions in GLU (ex: gluPerspective)
How can we “map” what the camera sees onto the window? • glViewport() • Aspect ratio