I learned some OpenGL ES and some shader coding. But is it really a necessity for developing Android, iOS and windows phone games? Windows phone I'm 99% sure that it is not even supported but have not researched it yet.
-
\$\begingroup\$ In short, no. I've had a lot of fun recently developing 2d games for iOS that don't directly use opengl. \$\endgroup\$– Orin MacGregorDec 7, 2012 at 20:20
-
\$\begingroup\$ what about 3D games? \$\endgroup\$– John DemetriouDec 7, 2012 at 20:20
-
\$\begingroup\$ I haven't done 3d yet, but I would think if you use something like Unity you won't need it. However, I have no experience with Unity so I may be mistaken. \$\endgroup\$– Orin MacGregorDec 7, 2012 at 20:38
-
\$\begingroup\$ "Is it necessary" well what exactly are you trying to do? \$\endgroup\$– TetradDec 10, 2012 at 18:46
2 Answers
Speaking to Android specifically, there is a 2D drawing API available as documented here that is not OpenGL ES based: http://developer.android.com/guide/topics/graphics/2d-graphics.html
If you aren't specifically looking to avoid OpenGL ES entirely and are just looking for a convenient abstraction on top of it to prevent you from having to work with it directly there are more options. For instance, while I haven't used it personally, starting with Android 3.0/API 11 it is possible to use hardware acceleration for the aforementioned 2D API: http://developer.android.com/guide/topics/graphics/hardware-accel.html
It does use OpenGL ES "under the sheets" but you wouldn't need to concern yourself with the details and/or create custom shaders. If this is acceptable you might also want to consider something like AndEngine: http://www.andengine.org/
With iOS, you probably want to check out their documents on Quartz 2d: https://developer.apple.com/library/mac/#documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_overview/dq_overview.html
In terms of 3D, there are libraries that can buffer you from OpenGL ES a bit. I used the Irrlicht port for API level 8/2.2 a few years ago although it looks a bit dusty now: http://gitorious.org/irrlichtandroid/pages/Home
You might consider libgdx: http://libgdx.badlogicgames.com/
When you want to create 2d games, then no, you won't need it.
When you want to do 3d games, you should first consider the available 3d engines and do a cost/benefit analysis of creating your own 3d engine. In most cases, this analysis will tell you that using an existing engine will allow you to bring your game to market in a lot less man-hours.
Every software developer has the urge to reinvent the wheel. But most of the time it's wasted effort, because others have already done it better than you could ever do it, and they offer it for a fraction of the price it would cost you to repeat their work. An important skill for every software developer is the ability to suppress ones pride, and realize when it's more efficient to buy an existing solution instead of inventing an own.
But note that "free" solutions aren't really cost-neutral: you still need to invest time and money to understand their API and integrate it into your project. An expensive one which comes with good documentation and support can turn out to be cheaper than a free one with poor documentation and without professional support.