22
So Cal Code Camp Summer ’12 Getting Started With OpenGL ES 2.0 By Matt Galaviz

Getting started with open gl es 2

Embed Size (px)

DESCRIPTION

Presentation for So Cal Code Camp 2012 session.

Citation preview

Page 1: Getting started with open gl es 2

So Cal Code Camp Summer ’12

Getting Started With OpenGL ES 2.0By Matt Galaviz

Page 2: Getting started with open gl es 2

About Me…• Currently part-time DBA (SQL Server)• Deep interest in game development• Started with Core Animation• Moved to OpenGL ES 1.1• Meetup conversation inspired/challenged to

learn OpenGL ES 2.0• Never wanted to be a Graphics Programmer ;)• Currently on 2nd or 3rd version of

graphics/game engine, iOS and android

Page 3: Getting started with open gl es 2

History

• OpenGL Website: http://www.opengl.org• Introduced in 1992• 2D/3D graphics API• Available on many different platforms• Windows, Unix, Linux, OS X, etc.

Page 4: Getting started with open gl es 2

History Continued

• OpenGL ES Website: http://www.khronos.org/opengles/

• OpenGL ES 1.1 similar to OpenGL 1.5• 1.1 = Fixed Function Pipeline• OpenGL ES 2.0 released circa 2008• 2.0 = Programmable Pipeline

Page 5: Getting started with open gl es 2
Page 6: Getting started with open gl es 2
Page 7: Getting started with open gl es 2

Programmable means more…

• Control – do what you want with shaders• Responsibility – shaders need data and

programming• Complexity – shader source, compilation,

VBO’s, MVP matrices, etc.• Discipline – maintaining shader data,

switching shaders and other things can cause code to run SLOWER. Best practice adherence is a must!

Page 8: Getting started with open gl es 2

Differences between 1.1 and 2.0

• Model/View/Projection (MVP)– 1.1: Can call built in functions (glMatrixMode,

glIdentity, glPushMatrix, glPopMatrix, etc.)

Taken from android

Page 9: Getting started with open gl es 2

MVP Differences Continued

– 2.0: Pass MVP matrices to shaders• Side note: Matrix libraries may not be available on all

platforms and may vary in use

Taken from android

Page 10: Getting started with open gl es 2

Shaders

• The programmable piece• Write in GLSL ES, similar functionality of C• Vertex Shader: handles vertex data• Fragment Shader: handles pixel data• Comprised of attributes, uniforms and varying

with types and variable precision• See specification for more details (approx. 200

pages)

Page 11: Getting started with open gl es 2

Sample ShadersVertex

Fragment

Page 12: Getting started with open gl es 2

Shader Creation

• Create Program• Create Vertex and Fragment shaders• Attach Vertex and Fragment shaders• Compile• Hope for the best!

Page 13: Getting started with open gl es 2

Shader Creation Example

Taken from iOS

Page 14: Getting started with open gl es 2

Shader Usage

• Use Program• Enable VBO’s– Pass Data• Attributes• Uniforms

– Draw Objects– Repeat data/drawing as needed

• Disable VBO’s

Page 15: Getting started with open gl es 2

Shader Usage Example

Taken from android

Page 16: Getting started with open gl es 2

OpenGL ES 2.0 Availability

• Android: 2.2• iOS: 3.0• WebGL: 1.0• Others

Page 17: Getting started with open gl es 2

Getting Started

• Identify goals– Support ES 1.1 and 2.0• Rewrite code to support provider/consumer model• Provider submits only primatives to consumer• Consumer determines how to handle primatives• Consumer = ES 1.1 or 2.0

Page 18: Getting started with open gl es 2

Getting Started Continued

– Multi Platform• Many differences between android/iOS• Java more similar to C++ in style and look than

Objective-C• NDK on android possibly even more similar

– Adds another layer of complexity

• Even same platform can vary– iOS 5 GLKit

• Keep shader source as separate files• Structure classes as similar as possible

Page 19: Getting started with open gl es 2

Poll

• Do you currently use OpenGL ES?• Another graphics API?• What platform do you use?• Are you planning to support multiple

platforms?• Preferred platform?

Page 20: Getting started with open gl es 2

My Resources/References

• Delicious: http://www.delicious.com/mattgalaviz

• Github:• http://www.github.com/geminileft

Page 21: Getting started with open gl es 2

Other Resources/References

• OpenGL ES 2.0 Specification http://www.khronos.org/registry/gles/specs/2.0/es_cm_spec_2.0.24.pdf

• GLSL ES Specification http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf

• PowerVR developers http://www.imgtec.com/powervr/insider/powervr-insider.asp

Page 22: Getting started with open gl es 2

The End

• Questions/Comments• Contact me @ [email protected]