What happened to DirectX 4?

Date:January 22, 2004 / year-entry #28
Orig Link:https://blogs.msdn.microsoft.com/oldnewthing/20040122-00/?p=40963
Comments:    19
Summary:If you go through the history of DirectX, you'll see that there is no DirectX 4. It went from DirectX 3 straight to DirectX 5. What's up with that? After DirectX 3 was released, development on two successor products took place simultaneously: a shorter-term release called DirectX 4 and a more substantial longer-term release called...

If you go through the history of DirectX, you'll see that there is no DirectX 4. It went from DirectX 3 straight to DirectX 5. What's up with that?

After DirectX 3 was released, development on two successor products took place simultaneously: a shorter-term release called DirectX 4 and a more substantial longer-term release called DirectX 5.

But based on the feedback we were getting from the game development community, they didn't really care about the small features in DirectX 4; what they were much more interested in were the features of DirectX 5. So it was decided to cancel DirectX 4 and roll all of its features into DirectX 5.

So why wasn't DirectX 5 renamed to DirectX 4?

Because there were already hundreds upon hundreds of documents that referred to the two projects as DirectX 4 and DirectX 5. Documents that said things like "Feature XYZ will not appear until DirectX 5". Changing the name of the projects mid-cycle was going to create even more confusion. You would end up with headlines like "Microsoft removes DirectX 5 from the table - kiss good-bye to feature XYZ" and conversations reminiscent of Who's on First:

"I have some email from you saying that feature ABC won't be ready until DirectX 5. When do you plan on releasing DirectX 5?"

"We haven't even started planning DirectX 5; we're completely focused on DirectX 4, which we hope to have ready by late spring."

"But I need feature XYZ and you said that won't be ready until DirectX 5."

"Oh, that email was written two weeks ago. Since then, DirectX 5 got renamed to DirectX 4, and DirectX 4 was cancelled."

"So when I have a letter from you talking about DirectX 5, I should pretend it says DirectX 4, and when it says DirectX 4, I should pretend it says 'a project that has since been cancelled'?"

"Right, but check the date at the top of the letter, because if it's newer than last week, then when it says DirectX 4, it really means the new DirectX 4."

"And what if it says DirectX 5?"

"Then somebody screwed up and didn't get the memo."

"Okay, thanks. Clear as mud."

Comments (19)
  1. Mike Dimmick says:

    I always thought DirectX 4 was the bit-more-than-3 but not quite 5 version that came with Windows NT 4.0 (and couldn’t be upgraded).

    Remarkably, in all the confusion, some games actually worked on NT 4.0 (I’m thinking particularly of Blizzard’s Diablo and StarCraft).

  2. anon says:

    Not to mention the name of interfaces. DirectX6 introduced IDirectDraw4. DirectShow introduced IDirectDraw3 (with a separate direct draw factory object), and so on… What a mess!!

  3. Raymond Chen says:

    That’s because COM interface conventions use sequential numbers for versions. So IDirectDraw4 is the fourth version of IDirectDraw. If a version of DirectX doesn’t change an interface, then the number doesn’t go up.

    This is what happens when multiple groups have different version numbering schemes – they don’t line up.

  4. denny says:

    :-) Sh*t happens, version numbering can be that way.

  5. MilesArcher says:

    This is why projects in development should use code names and not version numbers. Then when the marketing dweebs decide on a completely new version numbering system, no one is confused. This has saved us numerous times when marketing has decided to change the number from 15 to 3.0 to 2002 all for the same project

  6. Raymond Cheng sheds some light on what happened to DirectX 4. And no, they didn’t use NullSoft versioning logic.

  7. Jack Mathews says:

    Actually, with DirectX when there’s a new interface added, it’s numbered with the DirectX version number. Finally. Which is why there’s an IDirectDrawSurface8 now. I think they fixed that with DX6.

  8. quanta says:

    Curiously, if you go into dxdiag, all DirectX versions are version 4 – DirectX 8 is called 4.08something, DirectX 9 is 4.09something, and so forth. I wonder why.

  9. Shane King says:

    You should stop with the numbers and start with the codenames, me thinks. ;)

    Especially stop numbering things after years. That gets really embarassing when the schedule slips.

    Apple has it right I think: Panther, Jaguar, etc is the naming scheme to use. No matter how many versions get cancelled or how late it eventually slips, you’re never left with a gap in your numbering scheme or having to rename a product.

    And Panther is a much cooler name than 2003. Why oh why didn’t windows stick with Chicago, Memphis, etc?

    (PS: Yes, I know that Apple also calls their versions 10.0, 10.1, 10.2 etc).

  10. Scott says:


    Where will Apple go next? OS 10.20 – calico?

    Would you buy a future version of windows named after Intercourse, PA?

  11. Darren Winsper says:

    Non-numbered versioning schemes can be confusing to, well, anyone. After all, assume Microsoft end up calling Longhorn Windows FX. Now, how does XP relate to FX, in the eyes of a user? In the same vein, short of memorising the sequence, how would you know whether Panther is before or after Jaguar?

    Numbered versioning schemes have their problems too, unfortunately. If you go with year-based versioning, what do you do if you’re in a new software field and want to make a second release in a year?

    Just using straight numbers is nice in theory, but can ultimately have problems. One major problem is there are so many ways to number something. Another is that users think "the bigger the number, the better", leading to version inflation. Then there’s no easy way of comparing version numbers. IE6 vs. Mozilla 1.4, say. There’s differences, but they’re both competing in the same field, user-oriented browsers.

    Versioning’s a tricky thing, which is probably why MS keep changing their versioning scheme:)

  12. Two questions:

    1. Why are DirectX and Direct Draw coupled?

    In Windows 2000, the Trident 9385 video adapter has a driver built into the Windows 2000 CD, and it used to be listed as compatible. (Please do not confuse this actual chip with the Trident 9385 reference design which never was listed as compatible. Please also for the moment ignore the fact that Microsoft changed this listing after around 3 years.)

    In order to prevent this Microsoft-provided driver from causing Windows 2000 to blue screen, it is necessary to disable both DirectX and Direct Draw.

    Windows 2000 wasn’t supposed to be a gaming platform so no one should care about disabling DirectX. But why should we have to disable Direct Draw at the same time?

    (By the way the Trident 9385 video adapter has a working driver built into the Windows XP CD, a mostly working one built into the Windows NT4 CD, and a working one in the Windows 98 CD. Whatever the bug is, it looks likely to be fixable.)

    2. On the other hand, why are DirectX defaults and DirectX recommendations NOT coupled?

    In Windows Server 2003, the first time you open display properties and look at acceleration, you get to see the initial setting. This is the amount of acceleration that Microsoft sets by default.

    If you experiment with moving the slider back and forth, eventually you’ll get to see the recommended setting. This is the amount of acceleration that Microsoft says is recommended.

    Windows Server 2003 isn’t supposed to be a gaming platform, but nonetheless, why did Microsoft not default to its own recommendations?

  13. Raymond Chen says:

    Sorry I didn’t work on that part of DirectX. I don’t know the answer either. (Indeed I don’t really understand the questions!)

    But DirectDraw is part of DirectX, isn’t it?

    I think the slider recommendations are just leftovers from XP. I’ll check on that part at least.

  14. Raymond Chen says:

    Yup, the slider recommendation is a leftover from the days when everything was turned on full blast in Server. The recommendation text has been fixed for Longhorn, if that’s any consolation. Another example of "That’s an easy change" coming back to bite you.

  15. To answer quanta’s question (note the apostrophe, so I’m not talking about the Australian airline….)

    The 4 is for the OS version. DX Files build as part of the core OS for new OS releases, and so the DX files that shipped with XP had a version that matched the shipped version of XP. All of those had a version of 5.X.X.X. DirectX builds are therefore kept in sync with the OS versions for the major version.

    I’m guessing you’re not running XP. I think the 4 major version was for Windows 2000.

  16. 1/25/2004 6:39 PM Raymond Chen:

    > But DirectDraw is part of DirectX, isn’t it?

    Sorry I keep forgetting to check. In Windows 95 days, I thought that DirectDraw existed before DirectX did. So I thought there was a chance that disabling either DirectDraw or DirectX by itself might provide a workaround for a blue screening driver, I thought it shouldn’t be necessary to disable both together. Of course the slider doesn’t allow disabling either one by itself. Anyway, sorry I keep forgetting to check if DirectDraw is part of DirectX now.

    1/26/2004 10:40 AM Raymond Chen:

    > Yup, the slider recommendation is a leftover

    Actually I’ve just noticed that the recommendation might even be reasonable. I installed English language Windows Server 2003 from my personal MSDN subscription on one computer. Ever since I obeyed this slider recommendation, Windows Explorer has not been getting shut down for access violations and unhandled exceptions.

Comments are closed.

*DISCLAIMER: I DO NOT OWN THIS CONTENT. If you are the owner and would like it removed, please contact me. The content herein is an archived reproduction of entries from Raymond Chen's "Old New Thing" Blog (most recent link is here). It may have slight formatting modifications for consistency and to improve readability.

WHY DID I DUPLICATE THIS CONTENT HERE? Let me first say this site has never had anything to sell and has never shown ads of any kind. I have nothing monetarily to gain by duplicating content here. Because I had made my own local copy of this content throughout the years, for ease of using tools like grep, I decided to put it online after I discovered some of the original content previously and publicly available, had disappeared approximately early to mid 2019. At the same time, I present the content in an easily accessible theme-agnostic way.

The information provided by Raymond's blog is, for all practical purposes, more authoritative on Windows Development than Microsoft's own MSDN documentation and should be considered supplemental reading to that documentation. The wealth of missing details provided by this blog that Microsoft could not or did not document about Windows over the years is vital enough, many would agree an online "backup" of these details is a necessary endeavor. Specifics include:

<-- Back to Old New Thing Archive Index