OPEN GL - Bipindra Bir Shrestha. A GENDA Introduction to OpenGL Demo Programming in OpenGL Demo...
-
Upload
theodora-barrett -
Category
Documents
-
view
230 -
download
0
Transcript of OPEN GL - Bipindra Bir Shrestha. A GENDA Introduction to OpenGL Demo Programming in OpenGL Demo...
WHAT IS OPENGL?
An application programmer’s interface (API) that allows programmers to write programs that access graphics hardware.
BENEFITS
It is close enough to hardware so that programs written with OpenGL run efficiently
It is easy to learn and use.
THE PROGRAMMER’S VIEW
Specify Geometric Objects Describing properties of these objects Defining how these objects should be viewed
OPENGL FUNCTIONS Primitive functions
Geometric : polygons Discrete : bitmap
Attribute functions Control attribute of primitives. Eg color, line type,
light sources , textures Viewing functions
Determine properties of Camera. Input functions
Allow us to control windows on the screen and to use the mouse and keyboard
Control functions Allow us to start and to terminate OpenGL
programs and to turn on various OpenGL features.
OPENGL VERSIONS AND EXTENSIONS OpenGL is controlled by OpenGL Architectural Review
Board (ARB), which has members from companies such as SGI,IBM and Microsoft.
Present version is 2.1 . Next version 3.0, release date is not yet announced due to some issues.
OpenGL is very stable and has lower compatibility. Extensions: allow vendors to provide additional
functionality through extensions. Each vendor has alphabetic abbreviation .
E.g: glCombinerParameterfvNV() : NV for NVDIA
If many vendors agree on same implementation it becomes “Standard extension” abbriviated with ARB. Eg. GL_ARB_multitexture
LANGUAGES C C#: The framework Tao for Microsoft .NET includes OpenGL
between other multimedia libraries Delphi: Dot[4] Fortran: f90gl supports OpenGL 1.2, GLU 1.2 and GLUT 3.7 [5] Java:
Java Bindings for OpenGL (JSR 231) and Java OpenGL (JOGL) Lightweight Java Game Library (LWJGL)
Lisp: See the cl-opengl project at common-lisp.net Perl:
Perl OpenGL (POGL) module - shared libs written in C C vs Perl and Perl vs Python benchmarks
PHP: See http://phpopengl.sourceforge.net/ Python: PyOpenGL supports GL, GLU and GLUT [8] Ruby: See [9] - supports GL, GLU and GLUT Smalltalk as seen in Croquet Project running on Squeak
Smalltalk Visual Basic: ActiveX Control
CONFIGURING VISUAL STUDIO 2005 Download GLUT binaries for windows from “Nate
Robins” ‘s website http://www.xmission.com/~nate/glut.html
put the files as
Make sure visual studio c++ projects links in the GLUT/gl/glu libraries. Goto:
Menu: “Project -> (your-project-name) Properties” Tab: “Configuration Properties -> Linker -> Input” Under “Additional Dependencies”, add “glut32.lib opengl32.lib
glu32.lib” Under Configuration Properties->C++->General->Additional Include Directories : add "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include"
File Location
glut32.dll C:\WINDOWS\system\ (or system32)
glut32.lib C:\Program Files\Microsoft Visual Studio 2005\VC\PlatformSDK\Lib
glut.h C:\Program Files\Microsoft Visual Studio 2005\VC\PlatformSDK\Include\gl
PROGRAMMING IN OPENGL -1
GLUT Initialize :
void glutInit( int argc, char ** argv) Creating a window
int glutCreateWindow(char * title) Display Function
void glutDisplayFunc(void (*func)(void)) Main Loop
void glutMainLoop()
PROGRAMMING IN OPENGL -2 Drawing a rectangle
glBegin(Glenum mode) glEnd() void glVertex{2 3 4}{sifd}(Type xcoordinate,……)
void glClear(Glbitfield mask) void glFlush()
Changing GLUT defaults void glutInitDisplayMode(unsigned int mode)
void glutInitWindowSize(int width,int height)
void glutInitWindowPosition( int x, int y)
PROGRAMMING IN OPENGL -3 Setting Colors
void glColor*() void glClearColor( Glclampf r, GLClampf g, Glclampf b,
Glclampf a ) Two Dimensional Viewing
void gluOrtho2D( Gldouble left, Gldouble right, Gldouble bottom, Gldouble top)
Coordinate Systems and Transformation glMatrixMode( GL_PROJECTION ); glLoadIdentity();
Points glPointSize(2.0);
Lines GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP
in glBegin( GL_LINES ); Enabling OpenGL features
void glEnable( Glenum feature) void glDisable( Glenum feature )
PROGRAMMING IN OPENGL -4
Rectangles void glRect{ sifd} ( TYPE x1,y1,x2,y2 )
Text void glutBitMapCharcter( void * font, int char )
Save the state void glpushMatrix() void glPopMatrix()
Viewport void glViewport( Glint x, GLint y, Glsizei w, Glsizei h )
INTERACTION AND ANIMATION
Reshape and Idle Callback Double buffering Using keyboard and mouse Mouse motion Subwindows and Multiple Windows
THREE-DIMENSIONAL PROGRAMMING
Cameras and Objects Orthographic Projections in OpenGL Vertex Arrays Hidden Surface removal GLUT Objects
LIGHTS AND MATERIALS
Enabling and disabling OpenGL lighting Specifying Light source Controlling the Lighting Calculation Smooth Shading Transparency
IMAGES
Pixels and Bitmaps Displaying a bitmap Mixing Bitmaps and Geometry Colors and Masks Drawing Modes Reading and Writing Pixels Selecting Buffers Luminance Pixel Zoom
CURVES AND SURFACES
Bezier Curves and surfaces One dimensional OpenGL evaluators for
Bezier Curves Two dimensional evaluators to evaluate
Bernstein polynomials and to form Bezier surfaces.