OpenGL Starter L02

102
Mohammad Shaker Mohammadshaker.com mohammadshakergtr.wordpress.com OpenGL Starter Course @ZGTRShaker

description

A Short 2-slide Starter Course of OpenGL.

Transcript of OpenGL Starter L02

Page 1: OpenGL Starter L02

Mohammad ShakerMohammadshaker.com mohammadshakergtr.wordpress.com

OpenGL Starter Course@ZGTRShaker

Page 2: OpenGL Starter L02

Cube Maps

Page 3: OpenGL Starter L02

Cube Maps

Page 4: OpenGL Starter L02

Cube Maps

glBegin(GL_QUADS);// Negative XglTexCoord3f(-1.0f, -1.0f, 1.0f);glVertex3f(-fExtent, -fExtent, fExtent);glTexCoord3f(-1.0f, -1.0f, -1.0f);glVertex3f(-fExtent, -fExtent, -fExtent);glTexCoord3f(-1.0f, 1.0f, -1.0f);glVertex3f(-fExtent, fExtent, -fExtent);glTexCoord3f(-1.0f, 1.0f, 1.0f);glVertex3f(-fExtent, fExtent, fExtent);…..

Page 5: OpenGL Starter L02

Texture Mapping

Page 6: OpenGL Starter L02

FPS

Page 7: OpenGL Starter L02

FPSFrame Per Second

Page 8: OpenGL Starter L02

Lighting and Blending!

Page 9: OpenGL Starter L02

Lighting and Blending!

Page 10: OpenGL Starter L02

Combining light and texture

Page 11: OpenGL Starter L02

Lighting

Page 12: OpenGL Starter L02

Lighting

Page 13: OpenGL Starter L02

Lighting

Page 14: OpenGL Starter L02

Lighting

Page 15: OpenGL Starter L02

Lighting

Page 16: OpenGL Starter L02

Lighting

Page 17: OpenGL Starter L02

Lighting

Page 18: OpenGL Starter L02

Lighting

Page 19: OpenGL Starter L02

Lighting

Page 20: OpenGL Starter L02

Lighting

Page 21: OpenGL Starter L02

Lighting - Types

• Ambient Light: doesn’t come from any particular direction. It has an original

source somewhere, but the rays of light have bounced around the room or scene

and become directionless.

Page 22: OpenGL Starter L02

Lighting - Types

• Diffuse Light: The diffuse part of an OpenGL light is the directional component

that appears to come from a particular direction and is reflected off a surface with

an intensity proportional to the angle at which the light rays strike the surface.

Thus, the object surface is brighter if the light is pointed directly at the surface

than if the light grazes the surface from a greater angle.

Page 23: OpenGL Starter L02

Lighting - Types

• Specular light: Like diffuse light, specular light is a highly directional property, but

it interacts more sharply with the surface and in a particular direction.

Page 24: OpenGL Starter L02

Lighting

The per-vertex specular highlight is improved by using separate specularor a specular exponent texture.

Page 25: OpenGL Starter L02

Lighting

• An unlit jet reflects no light.

Page 26: OpenGL Starter L02

Lighting

The output from the completed AMBIENT sample program.

The output from the AMBIENT program when the light source is cut in half.

Page 27: OpenGL Starter L02

Lighting

GLfloat LightDiffuse[]= { 1.0f, 1.0f, 1.0f, 1.0f }; // Diffuse Light Values

GLfloat LightAmbient[]= { 0.5f, 0.5f, 0.5f, 1.0f }; // Ambient Light Values

GLfloat LightPosition[]= { 0.0f, 0.0f, 2.0f, 1.0f }; // Light Position

Page 28: OpenGL Starter L02

Lighting

GLfloat LightDiffuse[]= { 1.0f, 1.0f, 1.0f, 1.0f }; // Diffuse Light Values

GLfloat LightAmbient[]= { 0.5f, 0.5f, 0.5f, 1.0f }; // Ambient Light Values

glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse); // Setup The Diffuse Light

glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient); // Setup The Ambient Light

glLightfv(GL_LIGHT1, GL_POSITION,LightPosition); // Position The Light

GLfloat LightPosition[]= { 0.0f, 0.0f, 2.0f, 1.0f }; // Light Position

Page 29: OpenGL Starter L02

Lighting

GLfloat LightDiffuse[]= { 1.0f, 1.0f, 1.0f, 1.0f }; // Diffuse Light Values

GLfloat LightAmbient[]= { 0.5f, 0.5f, 0.5f, 1.0f }; // Ambient Light Values

glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse); // Setup The Diffuse Light

glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient); // Setup The Ambient Light

glLightfv(GL_LIGHT1, GL_POSITION,LightPosition); // Position The Light

glEnable(GL_LIGHT1); // Enable Light One

GLfloat LightPosition[]= { 0.0f, 0.0f, 2.0f, 1.0f }; // Light Position

Page 30: OpenGL Starter L02

Lighting

GLfloat LightAmbient[]= { 0.5f, 0.5f, 0.5f, 1.0f }; // Ambient Light ValuesGLfloat LightDiffuse[]= { 1.0f, 1.0f, 1.0f, 1.0f }; // Diffuse Light ValuesGLfloat LightPosition[]= { 0.0f, 0.0f, 2.0f, 1.0f }; // Light Position

if (keys['B']) // Is B Key Pressed And bp FALSE?{

bp=TRUE; // If So, bp Becomes TRUEblend =!blend; // Toggle blend TRUE / FALSEif(blend) // Is blend TRUE?{

glEnable(GL_BLEND); // Turn Blending OnglDisable(GL_DEPTH_TEST); // Turn Depth Testing Off

}else // Otherwise{

glDisable(GL_BLEND); // Turn Blending OffglEnable(GL_DEPTH_TEST); // Turn Depth Testing On

}}

Page 31: OpenGL Starter L02

Blending

Page 32: OpenGL Starter L02

Blending

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

Page 33: OpenGL Starter L02

Blending

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

Page 34: OpenGL Starter L02

Blending

Page 35: OpenGL Starter L02

Wire Framing

Page 36: OpenGL Starter L02

Wire Framing

Page 37: OpenGL Starter L02

Shadowing

Page 38: OpenGL Starter L02

Shadowing

Page 39: OpenGL Starter L02

Shadowing

Page 40: OpenGL Starter L02

Shadowing

Page 41: OpenGL Starter L02

Shadowing

Page 42: OpenGL Starter L02

Shadowing

// Draw objects in the scene, including base planeDrawModels(GL_TRUE);

// Enable alpha test so that shadowed fragments are discardedglAlphaFunc(GL_GREATER, 0.9f);glEnable(GL_ALPHA_TEST);

glLightfv(GL_LIGHT0, GL_AMBIENT, ambientLight);glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight);

// Set up shadow comparisonglEnable(GL_TEXTURE_2D);glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE,GL_COMPARE_R_TO_TEXTURE);

// Set up the eye plane for projecting the shadow map on the sceneglEnable(GL_TEXTURE_GEN_S);glEnable(GL_TEXTURE_GEN_T);glEnable(GL_TEXTURE_GEN_R);glEnable(GL_TEXTURE_GEN_Q);….

DrawModels(GL_TRUE);

Page 43: OpenGL Starter L02

Depth Buffer

Page 44: OpenGL Starter L02

Fog

Page 45: OpenGL Starter L02

Fog

• Why Fog?!

Page 46: OpenGL Starter L02

Blurring

Page 47: OpenGL Starter L02

Blurring

Page 48: OpenGL Starter L02

Blurring

Page 49: OpenGL Starter L02

Blurring

Page 50: OpenGL Starter L02

Blurring

Page 51: OpenGL Starter L02

Dynamic environment mapping

Page 52: OpenGL Starter L02

Dynamic environment mapping

Page 53: OpenGL Starter L02

Camera

Page 54: OpenGL Starter L02

Camera

Page 55: OpenGL Starter L02

Camera

Page 56: OpenGL Starter L02

Camera

Page 57: OpenGL Starter L02

Camera

Page 58: OpenGL Starter L02

Clipping

Page 59: OpenGL Starter L02

Clipping

Page 60: OpenGL Starter L02

Reflection

Page 61: OpenGL Starter L02

Reflection

Page 62: OpenGL Starter L02

Brightening

Page 63: OpenGL Starter L02

Brightening

Page 64: OpenGL Starter L02

Blooming!

Page 65: OpenGL Starter L02

Blooming!

Page 66: OpenGL Starter L02

Blooming!

Page 67: OpenGL Starter L02

Antialiasing

Page 68: OpenGL Starter L02

Anitalysing

Page 69: OpenGL Starter L02

Particles System

Page 70: OpenGL Starter L02

Particles System

Page 71: OpenGL Starter L02

Particles System

Page 72: OpenGL Starter L02

Particles System

Page 73: OpenGL Starter L02

Simple Particle System

• glTexCoord2d();

typedef struct // Create A Structure For Particle{

bool active; // Active (Yes/No)float life; // Particle Lifefloat fade; // Fade Speedfloat r; // Red Valuefloat g; // Green Valuefloat b; // Blue Valuefloat x; // X Positionfloat y; // Y Positionfloat z; // Z Positionfloat xi; // X Directionfloat yi; // Y Directionfloat zi; // Z Directionfloat xg; // X Gravityfloat yg; // Y Gravityfloat zg; // Z Gravity

} particles; // Particlesparticles particle[MAX_PARTICLES]; // Particle Array (Room For Particle Info)

Page 74: OpenGL Starter L02

LensFlare

Page 75: OpenGL Starter L02

LensFlare

Page 76: OpenGL Starter L02

Shaders

Page 77: OpenGL Starter L02

Shaders

Page 78: OpenGL Starter L02

Shaders

Page 79: OpenGL Starter L02

Shaders

Page 80: OpenGL Starter L02

Shaders

Page 81: OpenGL Starter L02

Shaders

Page 82: OpenGL Starter L02

Shaders

Page 83: OpenGL Starter L02

Shaders

Page 84: OpenGL Starter L02

Shaders – Geometry Shaders

Page 85: OpenGL Starter L02

3D Object Loaders

Page 86: OpenGL Starter L02

3D Object Loaders

Page 87: OpenGL Starter L02

3D Object Loaders

Page 88: OpenGL Starter L02

3D Object Loaders

Page 89: OpenGL Starter L02

3D Object Loaders

Page 90: OpenGL Starter L02

3D Object Loaders

Page 91: OpenGL Starter L02

Terrain

Page 92: OpenGL Starter L02

Terrain

Page 93: OpenGL Starter L02

Height map

Page 94: OpenGL Starter L02

Height map

Page 95: OpenGL Starter L02

Height map

Page 96: OpenGL Starter L02

Height map

Page 97: OpenGL Starter L02

Sound Engines

Page 98: OpenGL Starter L02

Sound Engine

• Fmod

• OpenAL

• Others

Page 99: OpenGL Starter L02

End of a Very Short Intro to OpenGL

Page 100: OpenGL Starter L02

Take a Look on my other courses @ http://www.slideshare.net/ZGTRZGTR

Available courses to the date of this slide:

Page 101: OpenGL Starter L02

http://www.mohammadshaker.com

[email protected]

https://twitter.com/ZGTRShaker @ZGTRShaker

https://de.linkedin.com/pub/mohammad-shaker/30/122/128/

http://www.slideshare.net/ZGTRZGTR

https://www.goodreads.com/user/show/11193121-mohammad-shaker

https://plus.google.com/u/0/+MohammadShaker/

https://www.youtube.com/channel/UCvJUfadMoEaZNWdagdMyCRA

http://mohammadshakergtr.wordpress.com/

Page 102: OpenGL Starter L02