So they're pretty much same powerful and flexible?
Originally Posted by BlackStar
OpenGL ES is easier to learn and develop with?
Core profile OpenGL is also cleaned up and refined more or less identically to OpenGL ES. The API was fully aligned between OpenGL ES 2.0 and OpenGL 4.2, and will likely be aligned between OpenGL ES 3.0 and OpenGL 4.3 (if not 4.2). Desktop OpenGL has a ton of features and support than OpenGL ES does not. The rumors for OpenGL ES 3 would make it almost -- but not quite -- equivalent to D3D10. The direct comparison is a bit uneven (even today's GL ES devices have some features only found in D3D11, while D3D11 still has features that no version of GL offers even with extensions -- primarily threading support, which is basically impossible to do properly with the 1980's single-threaded GL/GLES API design).
Originally Posted by uid313
So far as "easier to learn," the old deprecated OpenGL API is actually much "easier," which is why it's stuck around so long and why hobbyists and students keep clinging to it despite how awful it is for performance. Of course it's trivial to build such an easy API on top of GL3 or D3D, but nobody has written one (at least none that is widely known and ubiquitous). D3D10+ is also considered easier to learn and develop with compared to any version of GL ES or Core profile GL (again due to GL/GLES having that ancient 1980's style API, which is difficult to thread properly due to global state, is highly error prone and difficult to debug, is unfriendly to code completion, etc.).
OpenGL ES 2.0 (GLES2) requires EGL to setup and run, or the use of special nvidia/amd extensions for the desktop (which I don't know how to use) to setup and run GLES2.
More importantly, GLES2 is designed to run without GLX (which is why it typically requires the platform-neutral EGL), which allows it to run on mobiles and other systems which don't need X.org or can't run it, that's why Wayland requires (and defines its own) EGL - because Wayland needs to run independently without having to depend on GLX (X.org).
Thus as a desktop dev it's better to target GL 3.3 unless you're after WebGL or mobiles.
Last edited by mark45; 05-27-2012 at 10:45 PM.
I don't really get what you mean.
Originally Posted by mark45
Originally Posted by elanthis
Apparently, elanthis isn't the all-knowing "low-level graphics driver API god" he always pretends to be...
You have said this before but is it really that big?
Originally Posted by elanthis
I mean, for engines that can render to direct3d and opengl like unigine at least the unigine heaven benchmark doesn't have a big performance difference, does it?
And even wine, where direct3d is automatically translated to opengl and I imagine there is not much room for individual optimization for opengl the performance seems to be good enaugh...
I believe that the performance penalty being talked about is between the old style, deprecated GL apis and the newer GL rather than between GL and DX.
Originally Posted by ChrisXY
For example, using 'old style' glVertex calls means that every frame, every vertex has to be copied to the graphics card over a (relatively slow) bus, while 'newer style' GL (e.g. VBOs) allows all the vertices to be copied once, then re-used per frame. This will obviously have a performance impact.
I believe that DX10+ also required use of similar functions to the newer opengl, and are both of similar functionality, so I would expect any performance difference to be based on optimizations of the driver or user app, rather than a fundamental difference between the APIs.
Ah ok, I didn't read that right. Disregard it then.
I had always thought that OpenGL 3.1 Core Profile was the intended successor for OpenGL ES 2.0, but obviously I was wrong.
On the other hand, it looks like OpenGL ES 3.0 will be a superset of OpenGL 3.1 Core Profile (though not of the 3.2 or 3.3 core profiles), so I wasn't that far off...