DirectDraw deprecation question

From what I understand, Microsoft's definition of deprecated APIs like DirectDraw means its not being updated anymore. It doesn't mean it's removed completely from being usable. For me, I'm learning it for 2d education and the book series migrates to D3D9 later. But when I ask questions on MS's forums about DirectDraw and having a problem with an issue, I can guarantee that someone will say it's deprecated and that I shouldn't use it. But if COM is all about backward compatability and pick & choosing whatever API is needed for the project (say DirectDraw, DirectMusic, etc.), why am I being told not to use it  It's a COM interface as much as D3D9 is. I'd just like to know why they tell me not to use it. The DirectX Runtime have the .dll files anyway for backward compatability reasons, and thus "it will run." It doesn't make much sense to shut it out from development, but I'm all ears of where this thought process is.

Answer this question

DirectDraw deprecation question

  • BretUpdegraff

    Thanks for the thoughts. It has been fun! DirectDraw may not prepare me for Direct3D directly, but the book surely does prepare me for understanding 2d game programming theory & algorithms and thus it will apply to any graphics library I can think of. I remember learning a section in the book and it automatically helped me figure out how to solve a problem for one of my Gameboy Advanced projects. Things apply over, and I'm sure it still will as this book migrates over to D3D9. I think whats satasfying at the end is learning how games were done in the past. I don't believe I can be a good graphics programmer until I learn why we are where we are now, and how we got there. I also don't believe I have all the time in the world, so I don't plan to make many DirectDraw applications. I'm mainly in it for the theory, so I'll assume that's a good thing :)
  • GalenC

    Phil Vaira wrote:

    To keep this question on subject, I undstand these interface deprecations, but why enforce developers not to use them if users indeed do have the runtime .dlls on their machine Surely MS won't remove them, so what's the enforcing all about I don't see risk when the user has the older interfaces for pre-existing programs. Please explain if you can.

    We're not going to stop you. We warn about deprecation/obsoletion because, frankly, it's a bad business decision if you're a commercial developer to continue using deprecated APIs. I don't think I need to explain why. On the other hand, DirectDraw is very, very simple, so you'll be able to do some pretty sprite-based games in short order. In the end, it's a question of knowledge scalability. Learning how to use DirectDraw won't prepare you (in any way) to learn how to use Direct3D. They're effectively mutually exclusive.

    That being said, the things you learn about writing 2D games is quite useful, so if the book you're using uses DirectDraw, feel free to use it. It's all about doing fun things anyway, right :-)



  • CSharpShooter

    Nobody is enforcing anything - I've seen no lawsuits or threats. Its recommended that you don't use it just the same as its recommended that you don't use Windows 95 or Dos 6 any longer. Yes people can still choose to use them and yes plenty of folk do but its not recommended and you take the risk on yourself.

    MS do a pretty fantastic job of backwards compatibility but things like DirectX are much closer to the hardware than otehr APIs and game programmers typically test the limits more than other so sometimes its just not possible to keep 100% compatibility. I've seen nothing to suggest that DDraw apps won't run under Vista - its still part of the DX9 API and DX9 runs under Vista.



  • Tom Johnson

    Thanks for the thoughts, Andy. This book series migrates over to Direct3D 9 so I have no despriate need to stay "glued" to DirectDraw. I'm doing the "bottom's up" approach for educational purposes, but like you said ZMan, there are people still making a living off of it.

    I guess this question is more general than DirectDraw. All of these interfaces (DirectDraw, DirectMusic, DirectPlay) have been deprecated, but they still remain runtime .dlls that are required for backward compatability. In knowing that, I don't see why folks here need to make a career to tell developers not to use them when they still do indeed run. Also, I'm not really sure why they'd remove runtime .dlls. I understand that SDK's will probably stop distributing the libraries to stop further development, though, but I think that would cause some developers to use DX SDK 8.1 and release their games on Vista without a problem - assuming MS has an emulator for the earlier versions or the actual runtime files which I would most strongly suggest. To keep this question on subject, I undstand these interface deprecations, but why enforce developers not to use them if users indeed do have the runtime .dlls on their machine Surely MS won't remove them, so what's the enforcing all about I don't see risk when the user has the older interfaces for pre-existing programs. Please explain if you can.


  • Tim erin

    Not really sure about this but I think DirectDraw on Vista works but with one problem: when an application that uses DirectDraw is run desktop composition is disabled that means no glass, 3d windows etc.
  • FannwongCindy

    The DX team seem to avoid 'deprecated' for these APIs see http://forums.microsoft.com/MSDN/ShowPost.aspx PostID=76924&SiteID=1

    "DirectDraw: Use of DirectDraw is no longer recommended. With the release of DirectX 9.0, all two-dimensional functionality is contained within Microsoft Direct3D and its associated helper functions in D3DX. However, the Microsoft DirectDraw documentation is still available and can be viewed on MSDN."

    My reading of this means not updated or supported or distributed any more. At some point the files do disappear from the SDKs and you have to download older SDKs to get the files.

    So yes it should still work, but there is additional risk to you if you choose to use it that you won't get a fix if a future OS, for example, breaks some aspect of that API. Personally I think this is a low risk given that MS are pretty good about backward compatibility but its a risk all the same.

    From reading Indie/casual game forums there are still lots of people using DDraw and even DX7/8 interfaces becuase it reduces the downloads since those APIs are almost always already on the machine and becuase there are more machines out there that can handle those APIs. I'm sure some of those folk are making a living at it too.

    So bottom line - if you can live with the additional risk go for it.

    Disclaimer: This is my opinion on how it works. David can pop in and clarify the real meanings.



  • DirectDraw deprecation question