2. Overview
• CeedMath & CeedGL are libraries for easier
computer graphics development on Mac & iOS
• BSD license
• Available on Github
• https://github.com/rsebbe/CeedMath
• https://github.com/rsebbe/CeedGL
5. Why?
• CG math libs are generally written in C++
• C++ is cumbersome when developing in
Objective-C
• Need of a pure C library
• Need for both float & double data type
6. Definition
• Written in pure C
• Macro-based templates, float & double
• Simple types (float*)
• Chain-able
• C++ interoperable (polymorphic)
• In C, use _f or _d suffixes
• In C++, automatic based on param type
10. Demo
• Demo #1: template mechanics
• Demo #2: real world example (rounded rect)
C3MeshGeometry+Primitives.mm
• Demo #3: C++ templates for mouse picking
C3StreamPrimitive+Picking.mm
14. Why?
• OpenGL is a C API, most GL objects are int’s
• Error prone, all function take int’s
• Complex APIs, many functions
• Not practical within Objective-C
• Intimidating, hard to start
• Higher level abstractions exist (scene
graphs), but what if you only need standard
OpenGL?
15. Old vs. Modern OpenGL
OpenGL 1.x, 2.x OpenGL ES 1.x
define camera position, define object position, choose a
predefined illumination model, place the lights, draw some
triangles, change position, draw some other...
OpenGL >= 3.1 OpenGL ES 2.x + WebGL
set vertices, indices, shading program & params, then draw
16. OpenGL
• Modern OpenGL programming is hard.
Especially the first time...
• It’s a functional C API
• Most “objects” are represented by handles (int)
• Modern GL has removed many concepts
• Light, shading, transforms
• For the good, the old pipeline was limiting, and
a hurdle for card makers
• It is now more in sync w/ hardware capabilities
17. CeedGL
• CeedGL does not define new concepts
• But it helps in setting up and managing your
OpenGL objects
• Thin Objective-C Wrapper
19. Draw (1/2)
• Vertex Shader
• 1 execution per vertex
• inputs: uniform, attribute
• output: varying
• Fragment Shader
• 1 execution per output
pixel
• input: uniform, varying
• output: fragment color
20. Draw (2/2)
GLDrawCommand GLFramebuffer
GLProgram u GLValue GLRenderbuffer
v GLShader a GLValue GLTexture
f GLShader a GLBuffer
i GLBuffer
t GLTexture
22. GLKit?
• GLKit’s Math
• NEON optimized
• Currently iOS5 only, definitely Apple only
• Has an overlap with CeedMath
• GLKit’s GL
• Forces a GL coding style
• Provides easier starting point
• Mostly complementary to CeedGL
• Permissive, forkable open source make
sense in such projects
23. Happy 3D coding !
web:
www.creaceed.com
twitter:
@rsebbe
cocoaheads.be