Top Banner
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
36

Basics. OpenGL. “Hello world” George Georgiev Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

Jan 02, 2016

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

Table of Contents Computer graphics

2D 2.5D 3D 3D Graphics Libraries

OpenGL Introduction to OpenGL Setting up OpenGL “Hello World”

2

Page 3: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

Computer graphicsTypes, Geometry, Libraries

Page 4: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

2D Game GraphicsBasics, Common practices

Page 8: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

2D Game Graphics Transformations

Translation

‘Mirroring’

Rotation (only for ‘geometry’ sprites)

Scaling (only for ‘geometry’ sprites)

9

Page 10: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

2D Game Graphics Coloring

Per-pixel

Per-vertex (‘geometry’ sprites)

Animation Image sequences

10

Page 11: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

2.5D Game GraphicsBasics, Common practices

Page 13: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

2.5D Game Graphics Primitives

Images (textures)

Objects (sprites) Multiple images, one for each object

orientation

13

Page 14: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

2.5D Game Graphics Transformations

Translation

‘Mirroring’ (not often)

Oblique projection (pre-rendered)

Coloring Per-pixel

Animation Image sequences

14

Page 15: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

2.5D Example

15

Page 16: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

3D Game GraphicsFinally…

Page 17: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

3D Game Graphics Primitives

Geometry – Vertices, Lines, Triangles

Objects (sprites) Geometry meshes

Triangles (solid)

Lines (wireframe)

Vertices (‘constellations’)

17

Page 18: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

3D Game Graphics Transformations

Translation

Rotation

Scaling Uniform

Non-uniform

Projection Parallel (mainly orthogonal)

Perspective18

Page 19: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

3D Game Graphics Perspective viewing

Elements Eye position

View angle

Near clipping plane

Far clipping plane

20

Page 21: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

OpenGLIntroduction. "Hello World"

Page 27: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

Introduction to OpenGL (2)

Low-level

Procedural

Shader support GLSL

State-machine

Open-source, Open standard

28

Page 29: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

OpenGL SetupLive Demo

Page 33: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

OpenGL “Hello World”Live Demo

Page 35: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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

програмиране за деца – безплатни курсове и уроцибезплатен 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: Basics. OpenGL. “Hello world” George Georgiev  Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.

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