Presentation is loading. Please wait.

Presentation is loading. Please wait.

Basics. OpenGL. “Hello world” George Georgiev Telerik Corporation www.telerik.com.

Similar presentations


Presentation on theme: "Basics. OpenGL. “Hello world” George Georgiev Telerik Corporation www.telerik.com."— Presentation transcript:

1 Basics. OpenGL. “Hello world” George Georgiev Telerik Corporation www.telerik.com

2  Computer graphics  2D  2.5D  3D  3D Graphics Libraries  OpenGL  Introduction to OpenGL  Setting up OpenGL  “Hello World” 2

3 Types, Geometry, Libraries

4  Computer graphics are  Representation of image data  2 types – 2D and 3D  Computation-heavy  Closely related to computer geometry  Basic terminology  Primitives  Transformations  Interpolation 4

5  2-Dimensional (2D) graphics  Space is planar  Units – usually pixels  Use 2D geometry  Drawing order matters  Image files are essential  Pseudo 3-D (2.5D) graphics  Contain per-object depth information  Use oblique projections of 2D objects 5

6  3-Dimensional (3D) graphics  Provide depth information  Units – whatever you like  Use both 3D and 2D geometry  Drawing order DOESN’T matter  except for transparency  Lighting and texturing are essential  Model files are essential 6

7 Basics, Common practices

8  Primitives  Pixels  Images (textures)  Geometry – Dots, Lines, Triangles (rarely used)  Objects (sprites)  Groups of pixels  Images with transparency  Geometry meshes 8

9  Transformations  Translation  ‘Mirroring’  Rotation (only for ‘geometry’ sprites)  Scaling (only for ‘geometry’ sprites) 9

10  Coloring  Per-pixel  Per-vertex (‘geometry’ sprites)  Animation  Image sequences 10

11  Rendering process  Create a color buffer (usually a matrix with the screen resolution as dimensions)  Render the background to the buffer  Render the foreground to the buffer  Draw the color buffer to the screen 11

12 Basics, Common practices

13  Primitives  Images (textures)  Objects (sprites)  Multiple images, one for each object orientation 13

14  Transformations  Translation  ‘Mirroring’ (not often)  Oblique projection (pre-rendered)  Coloring  Per-pixel  Animation  Image sequences 14

15 15

16 Finally…

17  Primitives  Geometry – Vertices, Lines, Triangles  Objects (sprites)  Geometry meshes  Triangles (solid)  Lines (wireframe)  Vertices (‘constellations’) 17

18  Transformations  Translation  Rotation  Scaling  Uniform  Non-uniform  Projection  Parallel (mainly orthogonal)  Perspective 18

19  Coloring & Transparency  Per-vertex  Drawing order matters for transparency!  Transparent objects are drawn after opaque ones  Lighting  Per-vertex  Essential  Texturing 19

20  Perspective viewing  Elements  Eye position  View angle  Near clipping plane  Far clipping plane 20

21  Eye position  Usually called camera position  Represents the user’s viewing position  View angle  The camera’s “lens width”  Represents the user’s vision capabilities  60 or 45 degrees are most commonly used  The larger the view angle, the larger the view volume 21

22  Near clipping plane  The nearest visible distance  Represents the display  Far clipping plane  The farthest visible distance  Objects behind it are not rendered 22

23  The “Frustum”  The view volume, clipped by  The near clipping plane  The far clipping plane  Contains the visible objects  Visible objects are projected on the near clipping plane 23

24  Rendering process  Create depth and color buffers (matrices with the screen resolution’s dimensions)  Project objects’ vertices on the near clipping plane  Fill depth buffer (interpolating vertices depth)  Clip overlapping objects’ faces (using depth buffer)  Interpolate colors and render color buffer 24

25  Rendering 3D graphics to a 2D screen is a very complicated task  Computation-heavy  Knowledge-heavy  That’s why we use 3D graphics libraries  OpenGL  Direct3D  Nvidia Cuda 25

26 Introduction. "Hello World"

27  OpenGL 2.0 & 2.1  Cross-platform  Cross-language  Hardware accelerated  Reviewed and updated  ARB, Khronos Group  Extension mechanism  Massive community 27

28  Low-level  Procedural  Shader support  GLSL  State-machine  Open-source, Open standard 28

29  Additional libraries  GLEW – The extension wrangler  Makes it easy to access extensions  Included before all other OpenGL libraries  FreeGLUT – The utility toolkit  Handles window procedures  Handles input  Cross-platform  Supersedes GLUT 29

30  OpenGL & FreeGLUT with MS Visual Studio  Gathering “include” files  Compiling “.lib” and “.dll” files  Adding to the SDKs  Adding the.dll files to the system  Making a project  Linking against the “.lib” files 30

31  Useful links  Setting up ONLY OpenGL  http://thoughtsfrommylife.com/article-748- OpenGL_and_Visual_Studio_Express_2008 http://thoughtsfrommylife.com/article-748- OpenGL_and_Visual_Studio_Express_2008 http://thoughtsfrommylife.com/article-748- OpenGL_and_Visual_Studio_Express_2008  OpenGL setup and beginner tutorials  http://www.swiftless.com/opengltuts.html http://www.swiftless.com/opengltuts.html  Large-scope OpenGL tutorials (currently – 11.07.2011 – under maintenance)  http://nehe.gamedev.net/ http://nehe.gamedev.net/ 31

32 Live Demo

33  OpenGL “Hello World” with FreeGLUT  Goals  Create a window with OpenGL working in it  Introduce GLUT window procedures and the glutMainLoop  OpenGL knowledge attained:  OpenGL colors  Identity matrix  glClear 33

34 Live Demo

35 Questions?


Download ppt "Basics. OpenGL. “Hello world” George Georgiev Telerik Corporation www.telerik.com."

Similar presentations


Ads by Google