0% found this document useful (0 votes)
41 views

Application 3-D World Simulation User Interface Graphics Hardware (Rasterizer, Texturing, Lighting, Transformations, Etc.)

OpenGL is a software interface that allows applications to output 3D graphics to hardware. It specifies 3D objects with vertices, normals, colors and textures and passes this information to graphics hardware for processing like rasterization, texturing and lighting. OpenGL uses matrices to transform objects and project them in 3D space. It provides functions for specifying rendering states, clearing buffers, double buffering and lighting models to control how objects are displayed.

Uploaded by

Adnan Mursyidin
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
41 views

Application 3-D World Simulation User Interface Graphics Hardware (Rasterizer, Texturing, Lighting, Transformations, Etc.)

OpenGL is a software interface that allows applications to output 3D graphics to hardware. It specifies 3D objects with vertices, normals, colors and textures and passes this information to graphics hardware for processing like rasterization, texturing and lighting. OpenGL uses matrices to transform objects and project them in 3D space. It provides functions for specifying rendering states, clearing buffers, double buffering and lighting models to control how objects are displayed.

Uploaded by

Adnan Mursyidin
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 3

OpenGL OpenGL is a software interface to graphics hardware.

Application 3-D world Simulation User Interface

OpenGL
Geometry, vertices, normals, colors, texture, etc.

Graphics Hardware (rasterizer, texturing, lighting, transformations, etc.)

Specifying Object Vertices Every object is specified by vertices glVertex3f (2.0, 4.1, 6.0); glVertex2i (4, 5); glVertex3fv (vector); Current color affects any vertices glColor3f (0.0, 0.5, 1.0); glColor4ub (0, 128, 255, 0); glColor3dv (color); Vertices are specified only between glBegin(mode) and glEnd(), usually in a counter-clockwise order for polygons. glBegin (GL_TRIANGLES); glVertex2i (0, 0); glVertex2i (2, 0); glVertex2i (1, 1); glEnd(); Primitive Types in glBegin Points GL_POINTS Lines GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP Triangles GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN Quads GL_QUADS, GL_QUAD_STRIP Polygons GL_POLYGON

OpenGL: Modelview matrix Transforms objects within the scene. glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(10.5, 0, 0); glRotatef(45, 0, 0, 1); DrawCube(); Remember that the operations are right multiplied, so the transformation just before DrawCube() takes effect first. OpenGL: Projection Matrix Sets up a perspective projection. glFrustrum (...); gluPerspective (fovy, aspect, near, far);

OpenGL 1

glOrtho (...); gluLookAt (...); (often applied to modelview matrix) Example: glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(64, (float)windowWidth /(float)windowHeight, 4, 4096); gluLookAt(0.0, 0.0, 2.0, // camera position 0.0, 0.0, 0.0, // target position 0.0, 0.0, 2.0); // up vector GLUT OpenGL Utility Toolkit GLUT is a library that handles system events and windowing across multiple platforms Includes some nice utilities We strongly suggest you use it Find it at: http://graphics.stanford.edu/courses/cs248-04/proj3/index.html Example: int main (int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_DEPTH | GLUT_DOUBLE |GLUT_RGBA); glutInitWindowSize (windowWidth, windowHeight); glutInitWindowPosition (0, 0); glutCreateWindow (248 Video Game!"); SetStates(); // Initialize rendering states* RegisterCallbacks(); // Set event callbacks* glutMainLoop(); // Start GLUT return 0; } Setting Up Rendering States OpenGL is a state machine: polygons are affected by the current color, transformation, drawing mode, etc. Enable and disable features such as lighting, texturing, and alpha blending. glEnable (GL_LIGHTING); glDisable (GL_FOG); GLUT Event Callbacks Register functions that are called when certain events occur. Examples: glutDisplayFunc( Display ); glutKeyboardFunc( Keyboard ); glutReshapeFunc( Reshape ); glutMouseFunc( Mouse ); glutPassiveMotionFunc( PassiveFunc ); glutMotionFunc( MouseDraggedFunc ); glutIdleFunc( Idle ); OpenGL Buffers Multiple types of buffers Color buffers (front/back, left/right) Depth buffer (hidden surface removal) Stencil buffer (allows masking or stenciling) Accumulation buffer (antialiasing, depth of field)

OpenGL 2

Clearing buffers: // Clear to this color when screen is cleared. glClearColor (0.0, 0.0, 0.0, 0.0); // Clear color and depth buffers. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

OpenGL Double Buffering Double buffering: Draw on back buffer while front buffer is being displayed. When finished drawing, swap the two, and begin work on the new back buffer. glutSwapBuffers(); Primary purpose: eliminate flicker OpenGL: Normals and Lighting OpenGL can do lighting computations for you Normal vectors should be of unit length (normalized) in most cases. Normal vector kept as state each vertex is assigned the most recently set normal vector ... glNormal3fv (n0); glVertex3fv (v0); glVertex3fv (v1); glVertex3fv (v2); ... OpenGL: Lighting glEnable (GL_LIGHTING); OpenGL supports a minimum of 8 lights. glEnable (GL_LIGHT0); ... glEnable (GL_LIGHT7); Lights have a position, type, and color, among other things (more details in text). Types of lights are point light, directional light, and spotlight. OpenGL: Shading OpenGL supports 2 basic shading models: flat and smooth. glShadeModel(GL_FLAT); glShadeModel(GL_SMOOTH);

OpenGL: Material Properties Material properties are associated with each polygon (corresponding light properties) glMaterial*(GLenum face, GLenum pname, TYPE param); Some properties (pname), GL_AMBIENT: Ambient color of material GL_DIFFUSE: Diffuse color of material GL_SPECULAR: Specular component (for highlights) GL_SHININESS: Specular exponent (intensity of highlight)

OpenGL 3

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy