It is cross-platform and everyone supports it apart from Microsoft. Although I would tend a bit more towards OpenGL. If on the other hand you don't really need to use shaders you may go with either Direct3D or OpenGL. Of course, with Direct3D works only on Windows.
Whereas, you will be able to use similar shaders in Direct3D, because of the availability of better drivers for these low-end cards. If you are targeting such machines (Intel has a 50% graphics market share), it will be difficult to take advantage of the more advanced features like shaders (which became available in OpenGL 1.5). Many low-end Intel integrated cards don't ship with OpenGL drivers by default, or if they do they only support older versions/specs of OpenGL like 1.2/1.4. Microsoft is right now hugely biased towards Direct3D. OpenGL or Direct3D for a new Windows game project? Or something else? OpenGL still better than Direct3D for non-games? Intel's OpenGL drivers are generally lagging behind, both in quality and in supported features. ATI and NVidia do provide very good implementations, so it's not that much of a problem. So OpenGL apps on Windows rely on the GPU vendor to provide an updated implementation with their drivers. (XP with v1.1, I believe, and Vista/7 with 1.5). Windows itself only comes with ancient implementations of OpenGL. On Windows, the situation is sometimes a bit awkward though.
OpenGL works on any OS where an OpenGL driver has been written. DX10 and above only works on Vista and above. OpenGL has the advantage that it's not tied to a specific OS.
And Microsoft also provides the helper library D3DX which provides efficient implementations of a lot of commonly used functionality.
Debugging and optimizing DirectX code is much easier with tools such as PIX. Microsoft does an extremely good job of that. There are valid reasons to prefer either API though.ĭirectX has much better tool support. What happens on the GPU is the same in either case, because that's determined by your GPU driver, and because both OpenGL and DirectX try to be as efficient as possible. The biggest difference between DirectX and OpenGL is that one might require a function call or two more than the other to achieve certain tasks - and the performance cost of that is pretty much nonexistent. When writing code to use the GPU, the GPU is the limiting factor. NET, plain Berkeley sockets in C, or perhaps using some Python library. When writing network code, the bottleneck is the network adapter, and it doesn't matter if your socket code is written in. Some operations are inherently faster in OpenGL than in DirectX9, although DX10 remedied that.īut a good rule of thumb when working with external hardware is that it's not the API you're using that determines performance. Performance-wise, and assuming decent GPU drivers, there is no difference overall.