400 likes | 780 Views
Computer Graphics in Game programming. Basics. OpenGL. “Hello world” . George Georgiev. Telerik Corporation. www.telerik.com. Table of Contents. Computer graphics 2D 2.5D 3D 3D Graphics Libraries OpenGL Introduction to OpenGL Setting up OpenGL “Hello World ”. Computer graphics.
E N D
Computer Graphics in Game programming Basics. OpenGL. “Hello world” George Georgiev Telerik Corporation www.telerik.com
Table of Contents • Computer graphics • 2D • 2.5D • 3D • 3D Graphics Libraries • OpenGL • Introduction to OpenGL • Setting up OpenGL • “Hello World”
Computer graphics Types, Geometry, Libraries
Computer graphics • Computer graphics are • Representation of image data • 2 types – 2D and 3D • Computation-heavy • Closely related to computer geometry • Basic terminology • Primitives • Transformations • Interpolation
Computer graphics • 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
Computer graphics • 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
2D Game Graphics Basics, Common practices
2D Game Graphics • Primitives • Pixels • Images (textures) • Geometry – Dots, Lines, Triangles (rarely used) • Objects (sprites) • Groups of pixels • Images with transparency • Geometry meshes
2D Game Graphics • Transformations • Translation • ‘Mirroring’ • Rotation (only for ‘geometry’ sprites) • Scaling (only for ‘geometry’ sprites)
2D Game Graphics • Coloring • Per-pixel • Per-vertex (‘geometry’ sprites) • Animation • Image sequences
2D Game Graphics • 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
2.5D Game Graphics Basics, Common practices
2.5D Game Graphics • Primitives • Images (textures) • Objects (sprites) • Multiple images, one for each object orientation
2.5D Game Graphics • Transformations • Translation • ‘Mirroring’ (not often) • Oblique projection (pre-rendered) • Coloring • Per-pixel • Animation • Image sequences
3D Game Graphics Finally…
3D Game Graphics • Primitives • Geometry – Vertices, Lines, Triangles • Objects (sprites) • Geometry meshes • Triangles (solid) • Lines (wireframe) • Vertices (‘constellations’)
3D Game Graphics • Transformations • Translation • Rotation • Scaling • Uniform • Non-uniform • Projection • Parallel (mainly orthogonal) • Perspective
3D Game Graphics • Coloring & Transparency • Per-vertex • Drawing order matters for transparency! • Transparent objects are drawn after opaque ones • Lighting • Per-vertex • Essential • Texturing
3D Game Graphics • Perspective viewing • Elements • Eye position • View angle • Near clipping plane • Far clipping plane
3D Game Graphics • 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
3D Game Graphics • Near clipping plane • The nearest visible distance • Represents the display • Far clipping plane • The farthest visible distance • Objects behind it are not rendered
3D Game Graphics – view volume • 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
3D Game Graphics • 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
3D Game Graphics • 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
OpenGL Introduction. "Hello World"
Introduction to OpenGL • OpenGL 2.0 & 2.1 • Cross-platform • Cross-language • Hardware accelerated • Reviewed and updated • ARB, Khronos Group • Extension mechanism • Massive community
Introduction to OpenGL (2) • Low-level • Procedural • Shader support • GLSL • State-machine • Open-source, Open standard
Using OpenGL • 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
Setting up OpenGL • 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
Setting up OpenGL • Useful links • Setting up ONLY OpenGL • http://thoughtsfrommylife.com/article-748-OpenGL_and_Visual_Studio_Express_2008 • OpenGL setup and beginner tutorials • http://www.swiftless.com/opengltuts.html • Large-scope OpenGL tutorials (currently –11.07.2011 – under maintenance) • http://nehe.gamedev.net/
OpenGL Setup Live Demo
OpenGL "Hello World" • 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
OpenGL “Hello World” Live Demo
Comuputer Graphics in Game programming ? ? Questions? ? ? ? ? ? ? ? ? ?