Computer Graphics in Game programming
400 likes | 823 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.
Computer Graphics in Game programming
E N D
Presentation Transcript
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? ? ? ? ? ? ? ? ? ?