The evolution of Direct3D?

Started by
6 comments, last by Scoob Droolins 12 years, 1 month ago
Hello there gamedev community :) I have come here seeking some help.

I'm doing a report as part of my degree and one part of the report is to write about the evolution of Direct3D and the changes throughout its life cycle that have had an impact on the way we develop computer games, also why it was necessary for these changes at the current state of DirectX for every change since it was first conceived.

I'm not asking for anyone to do the work for me, I'm just struggling a bit and was hoping for a point in the right direction, as in someone could point out to me the most significant changes for games development in regards to Direct3D so I can go and read up the reasons for those changes by myself.

Thanks for reading.
Advertisement
Roughly speaking:
* Direct3D 7.0: Hardware T&L, multitexture, hardware vertex buffers
* Direct3D 8.0: Early shaders, DirectDraw removed
* Direct3D 9.0: HLSL, MRTs and floating point textures (early deferred rendering, shadow maps)
* Direct3D 10.0: More general compute hardware and some shader unification, geometry shaders, underlying arch revisions (DXGI, required hardware features)
* Direct3D 11.0: Fully generalized compute support, hardware tesselation (domain and hull shaders), multithreaded rendering

I don't know about earlier than that.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
great start, many thanks

Roughly speaking:
* Direct3D 7.0: Hardware T&L, multitexture, hardware vertex buffers
* Direct3D 8.0: Early shaders, DirectDraw removed
* Direct3D 9.0: HLSL, MRTs and floating point textures (early deferred rendering, shadow maps)
* Direct3D 10.0: More general compute hardware and some shader unification, geometry shaders, underlying arch revisions (DXGI, required hardware features)
* Direct3D 11.0: Fully generalized compute support, hardware tesselation (domain and hull shaders), multithreaded rendering

I don't know about earlier than that.
Promit is exactly right, but keep in mind that the Direct3D specification doesn't require a particular type of processing element (see D3D10 + 11). This is how the IHVs implemented it, but not necessarily because of the specification.
Well i don't know much about the history of DirectX... And despite some rumblings about the accuracy of Wikipedia it's at least a good start to get a brief overview of DX history.
There are two articles of interest, one covering DirectX and the other covering Direct3D.

Instead of me linking them just google "DirectX" and "Direct3D" and you will find them in the top 3 results.
Beyond that you might have to google each and every version of DirectX and Direct3D separately and build a history from there.

Unless of course you can find a game developer that has been around since 1992 and is willing to share his knowledge with you.

To answer your question "why it was necessary to" it's simply because demand exceeded the capabilities of the latest version and hardware grew ever faster and more capable. OpenGL played a big part in speeding up the development of DirectX and when OpenGL slowed down (version 1.3) so did DirectX (Version 9.0 a, b, c) and furthermore, the Xbox and PS3 can only use hardware compatible with DirectX 9 and OpenGL | ES 1.0 (OpenGL 1.3) with some features of OGL | ES 2.0 (OpenGL 2.0) respectively.
Only 'recently' (with the arrival of Vista, DirectX 10) an enormous demand has arrived for MORE. As gamers and developers demand ever higher fidelity in rendering (graphics) both hardware and drivers need to match the expecations.

So, simply put... It needed to evolve because we wanted more!
And there are many many more techniques to come as hardware grows, not necessarily in speed but in width.
An interesting place to start might be John Carmack's original rant of 1996 (I don't use the word "rant" disparagingly - JC himself has described it as one in latter years) - copy here: http://www.team5150.com/~andrew/carmack/johnc_plan_1996.html#d19961223

This seems a good kick-off point to me because it illustrates exactly how far DirectX has evolved since those days, and there is also a spooky similarity between current versions and the old D3D3 execute buffer model (although the API itself is infinitely better, the concepts behind it are much closer than they were in D3D5 to 9).

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.


Roughly speaking:
* Direct3D 7.0: Hardware T&L, multitexture, hardware vertex buffers
* Direct3D 8.0: Early shaders, DirectDraw removed
* Direct3D 9.0: HLSL, MRTs and floating point textures (early deferred rendering, shadow maps)
* Direct3D 10.0: More general compute hardware and some shader unification, geometry shaders, underlying arch revisions (DXGI, required hardware features)
* Direct3D 11.0: Fully generalized compute support, hardware tesselation (domain and hull shaders), multithreaded rendering

I don't know about earlier than that.

* Direct3D 3.0: Immediate and retained mode (and I think this where D3D made its debut, but I can't remember for sure)
* Direct3D 5.0: DrawPrimitive
* Direct3D 6.0: Stencil buffer, multitexturing, texture compression
Never used this disc, D3D was horribly difficult to use until DX5 and DrawPrim.
[attachment=7722:dx2 001.jpg]

This topic is closed to new replies.

Advertisement