Hi
I have a newbie question
What are the main differencies between OpenCl and OpenGl Es ?
In which case do you use the first or the second ?
May you explain me shortly ?
Thanks & regards,
OpenGL, including ES, is targeted at Graphics workloads, and contains a lot of domain-specific terminology and API entrypoints, to drive a conceptual graphics pipeline, as shown here (bit low res, sorry) http://3.bp.blogspot.com/-QA65xVes8nI/T_mDvwo6_8I/AAAAAAAABdw/mJjCdlJCR8I/s1600/pipeline1.png. OpenCL is far more generic, and is designed to allow more general-purpose computation to be performed on the same underlying hardware, without having to shoehorn your specific problem into the OpenGL pipeline.
Hth,
Chris
The two are really very similar in capability, although not identical. In general OpenCL has more "features", the main ones being:
Features are not always a good thing - pointers are hard to optimize for, for example, and some things which OpenGL ES compute does "for free" from the application point of view have to be explicitly coded and controlled by the application for OpenCL. Chris hit on the main difference though - OpenGL ES compute "just works" if you are trying to fit into a graphics application (you can interoperate OpenCL with OpenGL ES, but it's less transparent), and OpenCL means you're not restricted by OpenGL ES if you only want to do the compute part.
HTH, Pete
To help lessen confusion, Chris mentioned the Graphics aspect of OpenGL ES, whereas Pete mentioned the fact that OpeGL ES also supports Compute functionality as of version 3.1.
OpenCL is a much more comprehensive Compute API, but does not do Graphics.
In summary, you use OpenGL ES for rendering graphics, and OpenCL to do a lot of Compute workloads, however with GLES 3.1, you can now do some compute workloads within the GLES API, although it is not as extensive.