It feels like a lot and nothing has changed since that 3.9 year old blog post. On one had webGL, steamOS, Mac games, iOS games, and Android Games. On the other hand gaming PC is still a windows PC. What are your thoughts?
DirectX has a way better API which might be why. DirectX has been COM oriented, OOP design, for years. While OpenGL was handle-based, purely procedural.
Why you should use OpenGL and not DirectX
31–40 of 187 posts
Re: Why you should use OpenGL and not DirectX
#32This problem does not exist anymore.
Re: Why you should use OpenGL and not DirectX
#33Isn't this more or less a problem of the past? Today with tools like Unity3d, UDK, CryEngine, Shiva Engine, MonoGame etc, game developers are at a point where they can pretty much stop worrying about the OpenGL/DirectX layer beneath their engines. Those Engines have become so powerful and affordable that it hardly makes any sense to roll your own. In fact, imo you would need a very strong reason to build your own eng…
Uh, most of those have their core runtime engine written in C++ and are probably not itching to port their CPU-side code to JavaScript.. Porting to WebGL is only trivial for the GLSL shaders, nothing else. If anything, these companies are waiting and holding out for either PNaCl/ASM.js/Emscripten to be able to generate fast fully-working web-compatible engine code.
And those engines aren't just loading 3D models and blit them to the screen, at least that's not their selling point. They have their occlusion culling system .. particle systems .. animations .. hardware audio .. fake wind simulation .. rudimentary pathfinding .. a reasonably fast terrain renderer .. some physics engine intimately integrated into the whole thing.
You wanna port all that to JS? Go right ahead!
Re: Why you should use OpenGL and not DirectX
#34This is a quantifiable lie. I have written cross platform rendering engines and worked with many, I can tell you right now that platform and vendor specific hacks for OpenGL are a necessary evil if you want your stuff to work properly.
If you are working in a cross platform environment you abstract away rendering then whether you are using DX or OpenGL (or anything else - RSX, or whatever...) is not really important.
The question I always wonder is why OpenGL isn't this... if I can make it so can anyone else, absolutely. Its not hard or especially time consuming and gives you the power of actually being cross platform.
This is a constantly improving situation though... for example I no longer need to tell a large number of Intel graphics cards that clockwise is infact counter-clockwise for face winding - because they are obsolete and the drivers have improved. There are still many problems of that nature though... you might not realise that the driver is processing your vertex shader on the CPU for instance which makes for a significantly different performance profile to similar hardware in that class...
Re: Why you should use OpenGL and not DirectX
#35Again that post. Spreading the lie that all game consoles support OpenGL. Yes, OpenGL is a great API if one cares about portability and FOSS. Reality, the game industry cares about their IP and getting games released no matter what technology stack is used. Many AAA studios don't even develop for all platforms, rather target a main one, leaving the port to subcontractors. Back in the golden days of the arcades, many…
Re: Why you should use OpenGL and not DirectX
#36Earlier quoted context omitted.
> Many AAA studios don't even develop for all platforms, rather target a main one, leaving the port to subcontractors. AAAs are one thing and are mostly based on engine technology that has been in development for years. For them D3D vs. OpenGL is a non-issue that was solved a decade ago. Or they stick to being Windows only. And they have the budget to port (or hire a subcontractor to port) one way or another. For ind…
Many studios use game engines that either abstract away the graphics API or at least greatly simplify it. Building your own AAA engine is quite expensive even if you have a lot of resources. OpenGL ES 2+ is more like DX10 and less like Open GL.
Not only do they abstract away API details, perhaps even provide an api independence layer but they actually make the 3d magic hapen. OpenGL/D3D have no notion of "3d", there are no models, cameras, scenes, etc.
> OpenGL ES 2+ is more like DX10 and less like Open GL.
Not really. OpenGL ES is still like OpenGL. It's a subset of full OpenGL and does not fix the inherent design issues with the API.
Feature-wise OpenGL ES 2 is like DX9 which is like OpenGL 2.1 sans the legacy crap. OpenGL 3 is comparable to D3D10 and OpenGL 4 to D3D11. OpenGL 2.x was the "big change" from the old fixed function pipeline to a programmable shader based pipeline, but nothing was removed or deprecated in order to provide an incremental porting path. OpenGL 3 actually deprecates some of the old features but does not change the API, only removes the old parts.
But the API is still a horrible mess with a global state and weird side effects, even if a lot of stuff was removed. For the programmer, D3D is a lot nicer than OpenGL in many ways and that is unfortunately not going to change for the foreseeable future.
OpenGL gets the job done but it's very uncomfortable to use.
Re: Why you should use OpenGL and not DirectX
#37Isn't this more or less a problem of the past? Today with tools like Unity3d, UDK, CryEngine, Shiva Engine, MonoGame etc, game developers are at a point where they can pretty much stop worrying about the OpenGL/DirectX layer beneath their engines. Those Engines have become so powerful and affordable that it hardly makes any sense to roll your own. In fact, imo you would need a very strong reason to build your own eng…
> Soon all of these will support WebGL/HTML5 as a target and even render most of the (still very basic) WebGL engines obsolete Uh, most of those have their core runtime engine written in C++ and are probably not itching to port their CPU-side code to JavaScript.. Porting to WebGL is only trivial for the GLSL shaders, nothing else. If anything, these companies are waiting and holding out for either PNaCl/ASM.js/Emscri…
Of course there will still be usecases for Three.js and the likes, for more lightweight WebGL integrations. But full blown HTML5 games will pretty soon be possible through these engines. Unity3D already had a pretty feature complete Flash export and i am very sure they are already working hard on a html5 target option.
Re: Why you should use OpenGL and not DirectX
#38Isn't this more or less a problem of the past? Today with tools like Unity3d, UDK, CryEngine, Shiva Engine, MonoGame etc, game developers are at a point where they can pretty much stop worrying about the OpenGL/DirectX layer beneath their engines. Those Engines have become so powerful and affordable that it hardly makes any sense to roll your own. In fact, imo you would need a very strong reason to build your own eng…
> Soon all of these will support WebGL/HTML5 as a target and even render most of the (still very basic) WebGL engines obsolete Uh, most of those have their core runtime engine written in C++ and are probably not itching to port their CPU-side code to JavaScript.. Porting to WebGL is only trivial for the GLSL shaders, nothing else. If anything, these companies are waiting and holding out for either PNaCl/ASM.js/Emscri…
It is already done. https://github.com/kripken/emscripten/wiki
Re: Why you should use OpenGL and not DirectX
#39Earlier quoted context omitted.
> Isn't this more or less a problem of the past? Yes and no. If you want to be writing a typical 3d game like an FPS, and RTS or 3rd person platformer, you can and probably should use an off the shelf 3d engine and stay away from the lower level APIs, OpenGL and d3d. However, if you want to do something more exotic, say processing your webcam input stream with your GPU, or write a space scale render of the solar syst…
Sure, they are some edge cases where it might make sense, but even then i would analyze requirements very carefully. I have quite a bit of experience with Unity3D and besides being really simple to use you can basically extend it with any C#/C++ library that you see fit. Support for Webcam input streams is there out of the box and id argue theres hardly anything it cant do. Of course, if you want to be (or are) an en…
Sure, Unity3d is very flexible and has given us some outstanding games. Like Kerbal Space Program, for example. KSP has quite a bit of modifications to make Unity3d work for them, they have had to do some black magic to make Unity3d work in space scale scenes on both, the physics and graphics departments.
When looking at dev talks given by the KSP team, it begs the question whether or not they would have been better off not using Unity at all and doing a specialized engine from scratch. There's no real answer to this question and Unity probably made their time to market shorter so they could actually ship and sell the game to keep the development alive. And then they went on later to rewrite a lot of the stuff they did early on.
But from a purely software engineering standpoint, they might have been better off not using an off the shelf 3d engine, because there are no space scale 3d engines available.
Again, for most people it makes sense to pick up an engine and go with it but there are use cases where it might pay off to invest the time and effort to build your own tech from scratch.
Re: Why you should use OpenGL and not DirectX
#40And since this article was written Microsoft has pretty much admitted defeat by incorporating WebGL (a simplified version of OpenGL) in IE11.
Has there ever been a competing option of WebDirectX they could have tried to push instead? Or is admitting defeat in this case the same as admitting defeat by implementing Flexbox?