280 likes | 615 Views
Introduction to OpenGL Programming. Jian-Liang Lin 2002. What is OpenGL? -1. OpenGL is a cross-platform standard for 3D rendering. and software interface to graphics hardware.
E N D
Introduction to OpenGL Programming Jian-Liang Lin 2002
What is OpenGL? -1 • OpenGL is a cross-platform standard for 3D rendering. and software interface to graphics hardware. • The OpenGL Architecture Review Board(ARB), and independent consortium formed in 1992, governs the OpenGL specification. • OpenGL routines use the prefix gl.
What is OpenGL? -2 • Designed as a hardware-independent interface and implemented on many different hardware platforms. • No commands for performing windowing tasks or obtaining user input are included in OpenGL. • You must work through whatever windowing system controls the particular hardware you're using.
What is OpenGL? -3 • OpenGL doesn't provide high-level commands for describing models of three-dimensional objects. • With OpenGL, you must build up your desired model from a small set of geometric primitives. • points, lines, triangles, and polygons …etc.
The Advantages of OpenGL • Industry standard • Fast • Portable • Easy to use • Well-documented
Color Models • RGBA color • Red, Green, Blue, and Alpha channels • Up to 16M colors • Color-indexed • Small numbers of colors accessed by indices from a color lookup table(palette) • 8 bits = 256 colors
Basic Features • Transformation • Materials Lighting & Smooth Shading • Texture mapping • Depth buffer test (Z-Buffer) • Alpha blending • Double buffering for animation • Pixel operations
OpenGL Buffering -1 • OpenGL supports a variety of buffers for advanced rendering • Depended on driver implementation • Color buffers • Front-left, front-right, back-left, back-right, and any number of auxiliary buffers • Depth buffer • Also known as Z-Buffer for HSR
OpenGL Buffering -2 • Alpha buffer • Blending • Stencil buffer • To restrict drawing to certain portions of the screen. (basic application) • Accumulation buffer • Full scene manipulation
OpenGL library -1 • SGI’s OpenGL SDK • OpenGL.DLL & GLU.DLL • Open source implementation for hardware vendor reference. • Best software rendering library. • Can be downloaded from SGI’s website.
OpenGL library -2 • Microsoft’s implementation • From Win95 OSR2, Microsoft Windows ship with OpenGL32.DLL. • For old Win95 users, you still can download OPENGL95.EXE via Microsoft website. • Header files and import library files are already included in Win32 Platform SDK.
OpenGL library -3 • Microsoft’s OpenGL32.DLL applies a hardware accelerated driver registered in Registry. • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers • You can search it by using REGEDIT.EXE
Mesa Graphics Library • A OpenGL clone library. • You can use it as using OpenGL. • Portable on many OS. • You can download it in the following website • http://www.mesa3d.org/
OpenGL Utility Library • The OpenGL Utility Library(GLU) provides many of the modeling features, such as quadric surfaces and NURBS curves and surfaces. • GLU is a standard part of every OpenGL implementation • GLU routines use the prefix glu. • gluLookAt( … ); • …
Windows system related helper library • For every window system, there is a library that extends the functionality of that window system to support OpenGL rendering. • X Window System -> GLX • Microsoft Windows -> WGL • IBM OS/2 -> PGL
OpenGL Utility Toolkit -1 • The OpenGL Utility Toolkit (GLUT) is a window system-independent toolkit, written by Mark Kilgard, to hide the complexities of differing window system APIs. • GLUT routines use the prefix glut. • glutPostRedisplay(); • …
OpenGL Utility Toolkit -2 • You can download this toolkit in the following website • http://reality.sgi.com/mjk_asd/glut3/glut3.html • We focus on this toolkit.
Programming Environment -1 • PC(X86) • OpenGL v1.1 software runtime is included as part of operating system for Win 2000, Windows 98, Windows 95 (OSR2) and Windows NT • Linux, FreeBSD, …other UNIX-like OS can use Mesa graphics library.
Programming Environment -2 • SGI workstation • Personal IRIS, Indigo, Indy, Indigo2 O2, • Octane in CGGM Lab. • All with IRIS Operating System and X Window System
Compilers – Microsoft Visual C++ • Start a new workspace of Win32 Console application. • Add OpenGL32.lib glu32.lib glut32.lib in Projects/Setting/Link/Library modules column for linking
Compilers – Unix-like OS • Library files needed • libGL.so, libGLU.so, libglut.a, libX11.a, libX11.so …etc • Command line: • gcc [source files] –o [output file] –lglut –lGLU –lGL –lX11 –lm • The ordering of the linking flags is not changeable. • Suggest to write a Makefile.
Where is the reference? • OpenGL official site • http://www.opengl.org • You refer to OpenGL API documentation in MSDN Library.
How can you start? • Choose your platform • Get your desire OpenGL related library. • Start a GLUT simple program, build and test. • Refine the code as you wish. • Refer to some reference materials. • Consult with TA • Feel happy to see the result.