3D Game Graphics - Telerik Academy
Download
Report
Transcript 3D Game Graphics - Telerik Academy
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”
2
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
4
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
5
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
6
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
8
2D Game Graphics
Transformations
Translation
‘Mirroring’
Rotation (only for ‘geometry’ sprites)
Scaling (only for ‘geometry’ sprites)
9
2D Game Graphics
Coloring
Per-pixel
Per-vertex (‘geometry’ sprites)
Animation
Image sequences
10
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
11
2.5D Game Graphics
Basics, Common practices
2.5D Game Graphics
Primitives
Images (textures)
Objects (sprites)
Multiple images, one for each object
orientation
13
2.5D Game Graphics
Transformations
Translation
‘Mirroring’ (not often)
Oblique projection (pre-rendered)
Coloring
Per-pixel
Animation
Image sequences
14
2.5D Example
15
3D Game Graphics
Finally…
3D Game Graphics
Primitives
Geometry – Vertices, Lines, Triangles
Objects (sprites)
Geometry meshes
Triangles (solid)
Lines (wireframe)
Vertices (‘constellations’)
17
3D Game Graphics
Transformations
Translation
Rotation
Scaling
Uniform
Non-uniform
Projection
Parallel (mainly orthogonal)
Perspective
18
3D Game Graphics
Coloring
& Transparency
Per-vertex
Drawing order matters for transparency!
Transparent objects are drawn after opaque ones
Lighting
Per-vertex
Essential
Texturing
19
3D Game Graphics
Perspective viewing
Elements
Eye position
View angle
Near clipping plane
Far clipping plane
20
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
21
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
22
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
23
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
24
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
25
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
27
Introduction to OpenGL (2)
Low-level
Procedural
Shader support
GLSL
State-machine
Open-source, Open standard
28
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
29
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
30
Setting up OpenGL
Useful links
Setting up ONLY OpenGL
http://thoughtsfrommylife.com/article-748OpenGL_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/
31
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
33
OpenGL “Hello World”
Live Demo
Comuputer Graphics in Game
programming
Questions?