This document summarizes a presentation on getting started with OpenGL ES 2.0. It provides background on OpenGL and OpenGL ES, including key differences between OpenGL ES 1.1 and 2.0. The presentation discusses programmable shaders, shader creation and usage, and considerations for supporting both OpenGL ES 1.1 and 2.0 across multiple platforms like Android and iOS. It also lists additional resources for learning OpenGL ES.
Essentials of Automations: Optimizing FME Workflows with Parameters
Getting started with open gl es 2
1. So Cal Code Camp Summer ’12
Getting Started With OpenGL ES 2.0
By Matt Galaviz
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
3. 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.
4. 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
5.
6.
7. 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!
8. 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
9. 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
10. 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)
17. 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
18. 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
19. Poll
• Do you currently use OpenGL ES?
• Another graphics API?
• What platform do you use?
• Are you planning to support multiple
platforms?
• Preferred platform?