Presentation is loading. Please wait.

Presentation is loading. Please wait.

OPEN GL - Bipindra Bir Shrestha. A GENDA Introduction to OpenGL Demo Programming in OpenGL Demo References.

Similar presentations


Presentation on theme: "OPEN GL - Bipindra Bir Shrestha. A GENDA Introduction to OpenGL Demo Programming in OpenGL Demo References."— Presentation transcript:

1 OPEN GL - Bipindra Bir Shrestha

2 A GENDA Introduction to OpenGL Demo Programming in OpenGL Demo References

3 W HAT IS O PEN GL? An application programmer’s interface (API) that allows programmers to write programs that access graphics hardware.

4 B ENEFITS It is close enough to hardware so that programs written with OpenGL run efficiently It is easy to learn and use.

5 T HREE V IEWS OF O PEN GL 1. Programmer’s View 2. The OpenGL State Machine 3. The OpenGL Pipeline

6 T HE PROGRAMMER ’ S V IEW Specify Geometric Objects Describing properties of these objects Defining how these objects should be viewed

7 T HE O PEN GL S TATE MACHINE Application Program OpenGLDisplay Function Call Pixels

8 T HE O PEN GL P IPELINE PrimitivesTransformerClipper ProjectorRasterizerPixels

9 O PEN GL F UNCTIONS 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.

10 O PEN GL V ERSIONS AND E XTENSIONS 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

11 L ANGUAGES C C#C#: The framework Tao for Microsoft.NET includes OpenGL between other multimedia libraries TaoMicrosoft.NET DelphiDelphi: Dot [4] [4] FortranFortran: f90gl supports OpenGL 1.2, GLU 1.2 and GLUT 3.7 [5][5] JavaJava: Java Bindings for OpenGL (JSR 231) and Java OpenGL (JOGL) Java Bindings for OpenGLJava OpenGL Lightweight Java Game Library (LWJGL) Lightweight Java Game Library LispLisp: See the cl-opengl project at common-lisp.netthe cl-opengl project at common-lisp.net PerlPerl: Perl OpenGL (POGL) module - shared libs written in C Perl OpenGL C vs Perl and Perl vs Python benchmarks C vs Perl and Perl vs Python PHPPHP: See http://phpopengl.sourceforge.net/http://phpopengl.sourceforge.net/ PythonPython: PyOpenGL supports GL, GLU and GLUT [8][8] RubyRuby: See [9] - supports GL, GLU and GLUT[9] SmalltalkSmalltalk as seen in Croquet Project running on Squeak SmalltalkCroquet Project Visual BasicVisual Basic: ActiveX ControlActiveX Control

12 C ONFIGURING V ISUAL S TUDIO 2005 Download GLUT binaries for windows from “Nate Robins” ‘s website http://www.xmission.com/~nate/glut.html 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" FileLocation glut32.dllC:\WINDOWS\system\ (or system32) glut32.libC:\Program Files\Microsoft Visual Studio 2005\VC\PlatformSDK\Lib glut.hC:\Program Files\Microsoft Visual Studio 2005\VC\PlatformSDK\Include\gl

13 DEMO

14 P ROGRAMMING IN O PEN GL -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()

15 P ROGRAMMING IN O PEN GL -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)

16 P ROGRAMMING IN O PEN GL -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 )

17 P ROGRAMMING IN O PEN GL -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 )

18 I NTERACTION AND ANIMATION Reshape and Idle Callback Double buffering Using keyboard and mouse Mouse motion Subwindows and Multiple Windows

19 T HREE -D IMENSIONAL P ROGRAMMING Cameras and Objects Orthographic Projections in OpenGL Vertex Arrays Hidden Surface removal GLUT Objects

20 T RANSFORMATION Translation Rotation Scaling Setting vertices directly

21 L IGHTS AND M ATERIALS Enabling and disabling OpenGL lighting Specifying Light source Controlling the Lighting Calculation Smooth Shading Transparency

22 I MAGES Pixels and Bitmaps Displaying a bitmap Mixing Bitmaps and Geometry Colors and Masks Drawing Modes Reading and Writing Pixels Selecting Buffers Luminance Pixel Zoom

23 T EXTURE M APPING Texture Coordinates Texture Parameters Applying textures to surface Minimaps

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

25 DEMO

26 R ESOURCES Official Website : http://www.opengl.org/http://www.opengl.org/ SDK : http://www.opengl.org/sdk/http://www.opengl.org/sdk/ Reference pages : http://www.opengl.org/sdk/docs/man/ http://www.opengl.org/sdk/docs/man/ GLUT : http://www.opengl.org/resources/libraries/glut/ http://www.opengl.org/resources/libraries/glut/ Sample Projects at : http://www.ziyoo.com/http://www.ziyoo.com/


Download ppt "OPEN GL - Bipindra Bir Shrestha. A GENDA Introduction to OpenGL Demo Programming in OpenGL Demo References."

Similar presentations


Ads by Google