3. computer graphics and open gl - 3d graphics and game development course

36
Computer Graphics in Game programming Basics. OpenGL. “Hello world” George Georgiev http://academy.telerik.com Technical Trainer George Atanasov Front-End Developer academy.telerik.com /.../3d-game-development-op engl

Upload: telerik-software-academy

Post on 22-Dec-2014

1.530 views

Category:

Education


0 download

DESCRIPTION

In this presentation, part of the 3D graphics and game develpment course, we discuss the OpenGL libraly and the 2D, 2.5D and 3D computer graphics. The website and all video materials are in Bulgarian. Main topics: Computer graphics 2D 2.5D 3D 3D Graphics Libraries OpenGL Introduction to OpenGL Setting up OpenGL “Hello World”

TRANSCRIPT

Page 1: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

Computer Graphics in Game

programmingBasics. OpenGL. “Hello world”

George Georgiev

http://academy.telerik.com

Technical Trainer

George AtanasovFront-End Developer

academy.telerik.com

/.../3d-game-development-op

engl

Page 2: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

Table of Contents Computer graphics

2D 2.5D 3D 3D Graphics Libraries

OpenGL Introduction to OpenGL Setting up OpenGL “Hello World”

2

Page 3: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

Computer graphicsTypes, Geometry, Libraries

Page 4: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

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

Page 5: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

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

Page 6: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

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

Page 7: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

2D Game GraphicsBasics, Common practices

Page 8: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

2D Game Graphics Primitives

Pixels

Images (textures)

Geometry – Dots, Lines, Triangles (rarely used)

Objects (sprites) Groups of pixels

Images with transparency

Geometry meshes8

Page 9: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

2D Game Graphics Transformations

Translation

‘Mirroring’

Rotation (only for ‘geometry’ sprites)

Scaling (only for ‘geometry’ sprites)

9

Page 10: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

2D Game Graphics Coloring

Per-pixel

Per-vertex (‘geometry’ sprites)

Animation Image sequences

10

Page 11: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

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

Page 12: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

2.5D Game GraphicsBasics, Common practices

Page 13: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

2.5D Game Graphics Primitives

Images (textures)

Objects (sprites) Multiple images, one for each object

orientation

13

Page 14: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

2.5D Game Graphics Transformations

Translation

‘Mirroring’ (not often)

Oblique projection (pre-rendered)

Coloring Per-pixel

Animation Image sequences

14

Page 15: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

2.5D Example

15

Page 16: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

3D Game GraphicsFinally…

Page 17: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

3D Game Graphics Primitives

Geometry – Vertices, Lines, Triangles

Objects (sprites) Geometry meshes

Triangles (solid)

Lines (wireframe)

Vertices (‘constellations’)

17

Page 18: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

3D Game Graphics Transformations

Translation

Rotation

Scaling Uniform

Non-uniform

Projection Parallel (mainly orthogonal)

Perspective18

Page 19: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

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

Page 20: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

3D Game Graphics Perspective viewing

Elements Eye position

View angle

Near clipping plane

Far clipping plane

20

Page 21: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

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

Page 22: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

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

Page 23: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

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

Page 24: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

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

Page 25: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

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

Page 26: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

OpenGLIntroduction. "Hello World"

Page 27: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

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

Page 28: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

Introduction to OpenGL (2)

Low-level

Procedural

Shader support GLSL

State-machine

Open-source, Open standard

28

Page 29: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

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

Page 30: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

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

Page 31: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

Setting up OpenGL Useful links

Setting up ONLY OpenGL http://thoughtsfrommylife.com/articl

e-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/

31

Page 32: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

OpenGL SetupLive Demo

Page 33: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

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

glClear33

Page 34: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

OpenGL “Hello World”Live Demo

Page 35: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно

програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки

уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop

уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC

безплатен курс "Разработка на софтуер в cloud среда"

BG Coder - онлайн състезателна система - online judge

курсове и уроци по програмиране, книги – безплатно от Наков

безплатен курс "Качествен програмен код"

алго академия – състезателно програмиране, състезания

ASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NETкурсове и уроци по програмиране – Телерик академия

курс мобилни приложения с iPhone, Android, WP7, PhoneGap

free C# book, безплатна книга C#, книга Java, книга C#Дончо Минков - сайт за програмиранеНиколай Костов - блог за програмиранеC# курс, програмиране, безплатно

?

? ? ??

?? ?

?

?

?

??

?

?

? ?

Questions?

?

Comuputer Graphics in Game programming

http://academy.telerik.com/

Page 36: 3. Computer Graphics and Open GL - 3D Graphics and Game Development Course

Free Trainings @ Telerik Academy

3D Graphics and Game Development academy.telerik.com/…/

3d-game-development-opengl

Telerik Software Academy academy.telerik.com

Telerik Academy @ Facebook facebook.com/TelerikAcademy

Telerik Software Academy Forums forums.academy.telerik.com