Here are my ideas regarding cocos2d 2.x (and cocos2d 1.x):
cocos2d 1.x:
Compatibility (Apple's Technologies):
- works in every device: 1st, 2nd, 3rd, 4th, (5th, 6th,...) generation devices
- works in every supported iOS version: iOS v3.0, 3.1, 3.2, 4.0, 4.1, 4.2, 4.3, ...
- works on Mac 10.5, 10.6, ...
- Xcode 3 and Xcode 4
Compatibility (API):
- API will be backwards compatible. What works in v1.0, will work in 1.1, 1.2, 1.3, etc...
Stable
- No "revolutionary" features will be included in v1.x. They will be added in 2.x
cocos2d 2.x
(Un) Compatibility (Apple's Technologies)
- Only 3rd generation and newer devices will be supported (OpenGL ES 2.0 requirement)
- Only iOS 4 and newer (Accelerate framework, Blocks, integrated fonts, GCD, etc.)
- Mac OS X 10.6 and newer
- Xcode 4 (and newer) only
(Un) Compatibility (API):
- Compatibility with 1.x is not guaranteed. In fact, CCCamera / CCNode will be rewritten (lighter, faster, easier to use API)
- Also, CCNode / CCGrid will be splited (lighter, faster, easier to use API)
- Post processing filters: CCGrid might be merged or simplified with CCRenderTexture. More post processing filters (shaders, and client side effects).
- Will use 4x4 matrix. CGAffineMatrix (3x3) won't be used. Multiplications can be accelerated with BLAS. Matrix will "exposed" (in fact CCCamera will use it).
- Obsolete / Deprecated / Old libraries will be removed:
-> cocosLive (GameCenter or OpenFeint are excellent replacements). User can added it manually if they want
-> FontLabel: Not needed in iOS 4
-> TouchJSON: Not needed. It was a cocosLive's dependency
- It might use "unstable" box2d/chipmunk, depending on the context.
(Un) Stable
- New features like OpenGL ES 2.0 will be supported.
- OpenGL ES 1.1 won't... (although it might be added later) [*] (See below)
[*] Why OpenGL ES 1.1 might not be included ?
cocos2d will do its best to hide the complexities of OpenGL to the end user (like in cocos2d 1.x) However there are scenarios where the user might need to code directly using OpenGL (also like in cocos2d 1.x). If this is the case, the user can use OpenGL directly (like in cocos2d 1.x).
But in cocos2d 2.x, OpenGL ES 2.0 will be used (shaders), instead OpenGL ES 1.1 (fixed pipeline).
Supporting both OpenGL ES 1.1 and OpenGL ES 2.0 will take a lot of development & maintenance time and energy. Personally, I want to focus my time and energy on the new stuff. If someone wants to add support for ES 1.1, you are welcome.
My vision regarding OpenGL ES 1.1 and the fixed pipeline:
- The fixed pipeline was deprecated in OpenGL 3.1 (March 2009) (It is only available as an extension)
- OpenGL ES 2.0 doesn't include fixed pipeline (although most mobile GPUs are implementing the fixed pipeline with shaders, but it is not part of the specification).
- 1 ~ 2 year old devices already support OpenGL ES 2.0 (both iOS and Android devices)
- WebGL is built on top of OpenGL ES 2.0 (no fixed pipeline. It is impossible to use fixed pipeline in WebGL. Also, think of portability, think of cocos2d-webgl).
- Sure, some things are easier to do with fixed pipeline, but they can also be done with shaders (I reckon that sometimes with very complex shaders)
- Shaders means: creativity, new effects, performance
If you are going to learn OpenGL, IMHO, it is better to learn OpenGL ES 2.0 / WebGL, and skip the fixed pipeline functions.
Your views are more than welcome.