Jo22 wrote:I couldn't have said it any better. :)
The only minor exception to this is/was DX 10 to 11 I believe.
There was a time when MS t […]
Show full quote
I couldn't have said it any better. 😀
The only minor exception to this is/was DX 10 to 11 I believe.
There was a time when MS threw out the "cap bits" and required cards to support all DX (D3D?) features in hardware.
Anyway, I believe that changed again. That confusing "feature level" story is all water under the bridge now (or how it is said in English).
Not entirely...
I made an overview here: https://scalibq.wordpress.com/2012/12/07/dire … -compatibility/
In short, all DX versions have a certain minimum requirement featureset.
DX1 through 7 were loose enough that basically any kind of 3D accelerator could support the minimum featureset. As such, they all ran on the same basic driver, and the DX runtime just presented capability bits to the application, so it could decide what and how to render.
DX10 is the only API where the minimum featureset is equal to the entire API featureset.
DX11 actually has a lower minimum featureset than DX10, which is somewhat strange, since DX11 is a superset of the DX10 API. It looks like DX10 just wasn't fully finished (in the SDK you could find some 'downlevel' flags for DX10, but they did not work yet).
DX11 has 'downlevel' support down to basic DX9 SM2.0 hardware (even with no hardware T&L or vertex shaders, with a CPU fallback).
Of course in practice most applications did not support such a wide range of hardware, so eg for most DX9 games, you need more than the absolute minimum hardware. Commonly you need SM2.0 or SM3.0 support, even though DX9 can run even on pre-shader hardware.
Half-Life 2 is a fine example of DX9 being used to its full potential, supporting hardware from the original GeForce and Radeon up to full SM3.0 DX9.0c hardware.
Another interesting tidbit of detail about the D3D API is that D3D8 was the first version to be completely 'standalone'.
D3D7 and earlier were extensions of DirectDraw: You would use DirectDraw to create the basic graphics buffers that you render to, and if you had a 3d accelerator, you could query the Direct3D acceleration API, and use it to render on the DirectDraw buffers.
DX8 dropped support for DirectDraw altogether, and Direct3D was now a 'complete' API, where it managed its own buffers and everything.