Is It Time For an OpenGL Gaming Revolution?
MrSeb writes "In a twist that reinforces Valve's distaste for Windows 8, it turns out that the Source engine — the 3D engine that powers Half Life 2, Left 4 Dead, and Dota 2 — runs faster on Ubuntu 12.04 and OpenGL (315 fps) than Windows 7 and DirectX/Direct3D (270.6 fps); almost a 20% speed-up. These figures are remarkable, considering Valve has been refining the Source engine's performance under Windows for almost 10 years, while the Valve Linux team has only been working on the Linux port of Source for a few months. Valve attributes the speed-up to the 'underlying efficiency of the [Linux] kernel and OpenGL.' But here's the best bit: Using these new OpenGL optimizations to the Source engine, the OpenGL version of L4D2 on Windows is now faster than the DirectX version (303.4 fps vs. 270.6 fps). If OpenGL is faster, and it has a comparable feature set, and hardware support is excellent... why is Direct3D still the de facto API? With Windows losing its gaming crown and smartphones (OpenGL ES!) gaining in popularity, is it time for an OpenGL revolution?"
Not necessarily better than OpenGL, but better than 270.6 fps.
Valve's blog post, near the bottom, indicates that they plan on fixing the hang-up with Direct3D, now that they know that the hardware can do better than 270 fps.
Who let this one through?
http://linux.slashdot.org/story/12/08/02/1236203/valve-shares-performance-numbers-on-port-of-left4dead
It's too feature limited. It's not even up to par with Direct3D 9.0c/9_3, let alone D3D10+. No MRTs, no compute shaders, no geometry features (tessellation, instancing, etc), no standard texture compression format, etc.
Sir, this is complete, utter bullshit.
DirectX gets almost nothing “much earlier”, because it has no extension mechanism. With DirectX you are stuck with the latest version. It has obvious advantages, but early features are certainly not amongst them. Think what you want about the ARB, it does release and releases often.
As for the documentation being terrible and vague, that's pretty uninformed, too. Every extension is fully documented and the vendors know precisely what needs to be implemented. There is no Direct3D equivalent of the 600-page OpenGL specification. The DirectX documentation is a programmer’s guide, not a specification. Every single version of the GLSL standard comes with a full grammar of the language which lets you reimplement a parser or compiler. There is no such thing as a grammar for HLSL (the D3D equivalent). What Microsoft calls a “grammar” for HLSL can be found here and anyone not even in the field of graphics programming will immediately understand how much of a joke it is compared to this (pages 166 to 174).
(Source: I work on Windows, Linux, PS3, Xbox and mobile game engines)
God, root, what is difference ?
Besides that most, if not all, of my console games are OpenGL not DirectX.
Not if your console is a Wii or a PS3 since everyone uses the vendor supplied graphics API. On the PS3 this is PSGL which while smilar to OpenGL ES 1.0 is not OpenGL and is instead based on Cg created by NVIDIA. On the Wii this is another proprietary API that is similar to fixed function OpenGL but is again not OpenGL.
People seem very excited about the 20% "increase" in fps, but it is misleading. To get the actual increase in speed, you need to use the frametime instead:
270.6 fps = 3,695 ms per frame
315 fps = 3,175 ms per frame
So the actual difference is a measly 520 microseconds. A change this small might not even be something that is related to the OS or graphics api used. It may even be because the windows OS they used is 64-bit, and the linux OS is 32-bit.
If OpenGL is faster, and it has a comparable feature set, and hardware support is excellent... why is Direct3D still the de facto API?
Because Valve is using DX9, not DX11. Even the Gallium3D developers have stated DX11 is much cleaner, easier, and feature rich than OpenGL. There are many things DX11 can do 2x-3s faster than DX9 but breaks engine compatibility with DX9, which makes me wonder how a proper DX11 optimized engine would compare to OpenGL.
Rule of thumb is if a graphics engine works with DX9/OpenGL, then it is not making full use of DX11 because the optimal flow of data is different and would require an entirely differently designed engine.
If L4D2 was using the latest DX11.1 implementation and the latest technique, I'm not so sure it would be faster on OpenGL.
That's really not true. Google for performance of DX11 vs DX9: in many cases, DX11 is actually slower (20% slower or so seems to be the trend). Crysis 2, Dragon Age 2, Lost Planet 2: all slower in DX11. A lot of this is the fact that they are simply tacking on DX11 features, since they have to support DX9 for legacy hardware and OSes (which Source definitely would), but DX11 is not necessarily faster simply because it is newer. Indeed, it is often slower because of that: graphics card support for it is no-where near as good as it is for DX9.0c.
"None can love freedom heartily, but good men; the rest love not freedom, but license." --John Milton
Here is a complete list of Win32 APIs that are supported for Metro apps. If you look under "Graphics", you'll notice that it has Direct2D and Direct3D, but not OpenGL.
Did we ever need direct X? Any reason why direct X couldnt be an open standard? Were they too self centred to just work on opengl?
Don't forget the origin of DirectX: Microsoft wanted to encourage game developers to embrace Windows 95 at a time when Win 3.11 had been seen as a business-application-only platform, with DOS preferred for games. DirectX was developed as a collection of APIs for games running in Windows 95 that handled input, graphics, music, sound, networking, etc. Only Direct3D, which initially shipped with DirectX 2.0, is directly competing with OpenGL.
I don't think there was a similar comprehensive API available for the PC market at the time DirectX was released. My copy of Need for Speed SE actually runs on either DOS 6.22 or Win95 w/ DirectX.
my, your, his/her/its, our, your, their
I'm, you're, he's/she's/it's, we're, you're, they're
Not anymore! DirectInput, DirectSound, DirectPlay, etc have all become obsolete and are there only for compatibility. The only real difference is D3DX, which includes a little more functionality for loading shaders and models, but "DirectX" is pretty much obsolete, save for D3D.
Uh.... considering Glide was the first and only 3D api for quite a while and it was later followed by DirectX/OpenGL. That's quite wrong. Also, Microsoft went into a deal with SGI to create a 3d API based on OpenGL which Microsoft Cynically shitcanned/backstabbed SGI on.
Uh.... considering Glide was the first and only 3D api for quite a while and it was later followed by DirectX/OpenGL. That's quite wrong. Also, Microsoft went into a deal with SGI to create a 3d API based on OpenGL which Microsoft Cynically shitcanned/backstabbed SGI on.
Glide was based on a subset of OpenGL features specifically chosen by 3DFX for gaming. So I guess it may have been the first 3D API designed specifically for gaming (though I think Direct3D began around the same time, it just sucked), but it certainly wasn't the first 3D API.