DirectX 9 or DirectX 11 ?

Started by
13 comments, last by ProgrammerDX 10 years, 5 months ago
So here's my dilemma: I don't know which API version I should focus on learning/using, DirectX 9 or DirectX 11 ? I want to start off with making some simple 2D games just to get a feel of the API and then eventually move into 3D games. I have prior experience with D3D9 and if i start reading about it again I'll pick it up quickly and be on my way with it in no time...however lately I've been trying to learn how to code with D3D10/11 but I'm not having any luck with it because of the lack of tutorials on the web, hard to follow documentation, etc.

I purchased a book called Introduction to 3D Game Programming with DirectX 10 by Frank D. Luna and it's an ok book but it doesn't quite tell you anything related to 2D. For some reason I just find D3D10 and D3D11 to be very hard to understand/learn compared to D3D9 but I know I'll probably have to learn how to use them eventually.

Do you think it's better for me to stick with D3D9 and relearn how to make 2D games with it and then move into 3D or is D3D10/11 better? And also would D3D9 be an easier transition into 3D after I'm comfortable with 2D compared to 10 and 11 ?

If you guys suggest 10/11 could you please suggest some good books/links I could look at because my google-foo is really letting me down lately and I can't find anything that's helpful.
Advertisement
For real? I cannot believe you have this doubt. I'd jump on 11 every day of the week if I could!
Real hard truth is, if you find the lack of 2D concepts in a book a problem, you probably don't have much knowledge to start with. So why not to start with something that is modern and cleaner?
Similarly, if you still think in terms of APIs to use, I'm afraid you don't have much to save, otherwise you'll realize the simple fact the API will soon become detail in a complex system.

No matter what your task is, D3D1x is more streamlined and compact. Of course you have to bite the bullet when it comes to emulating the FFP but the generic approach involved is in my opinion far better than FFP, where vertices are transformed in a way if you turn out <this switch> unless <this other switch> is also turned on, in which case <something different> will happen. And what about resource management? It actually makes sense!

But anyway, you know D3D9 already? Much better to learn another API: it will help you in getting a more solid understanding of the notions involved.

Previously "Krohm"

Use DirectX11 if you can, the book you have is great, make sure you understand everything before moving between chapters. Its probably one of the best introduction to direct x books you can buy. For an advanced book on the subject id recommend Jason's.
Since your not sure how to do 2D sprites, I think this is what your looking for: http://www.rastertek.com/tutdx11.html check tutorial #11. smile.png
Direct3D 9 supports Xbox360 and Windows XP, whereas D3D11 does not.

Direct3D 11 supports Windows Vista onwards only, but can run on earlier D3D9-level hardware using feature levels.

So the choice comes down to:
360 or XP support required? Use D3D9.
Otherwise use D3D11.

Hope that helps.

[Edit] The feature levels of D3D11 also mean there's also no reason to use D3D10 any more.
Ok thanks guys...i guess I'll start to learn D3D11 then. Any good books or tutorials you guys would suggest for me to start with?
A handy secret to know is that, while much of Microsoft's D3D11 content is rather poor (it's improving though), you can quite easily jump back to the corresponding D3D10 content and just mentally translate the API calls. 10 and 11 are so similar that this is completely painless to do in almost every case aside from the handful of 11-only features you might be using.

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


Ok thanks guys...i guess I'll start to learn D3D11 then. Any good books or tutorials you guys would suggest for me to start with?


http://www.amazon.co.uk/Practical-Rendering-Computation-Direct3D-11/dp/1568817207/ref=sr_1_1?ie=UTF8&qid=1341494031&sr=8-1 should do you :)
I am considering the fact that people who already know DirectX 9 are telling a newbie to jump right to DirectX 11. Are you saying that the previous knowledge that came from DirectX 9 has no bearing on your understanding of CG concepts that are relevant in DirectX 11? To me it seems similar to suggesting algebra is not that important, so just right to calculus. Furthermore, I would think concepts that were covered in depth in the DirectX 9 book are (if covered) glossed over in the DirectX 11 book. So can someone give this a little thought and provide a reply on how worthwhile it would be to understand where 'we' have been (i.e. fixed pipeline) in our effort to understand the state of the art technology (i.e. DX11). Thanks
OK.

Best case is that most of what you learn on the fixed pipeline will be completely irrelevant to a shader-based setup. Worst case is that it will be misleading and cause you to make a few false starts.

That's only a slight exaggeration - some concepts will transfer over OK, but moving to shaders really does change the game quite significantly. By trying to approach them with the old mindset you'll only limit yourself.

D3D11 doesn't build on D3D9 the same way that calculus builds on algebra - that's a flawed analogy. D3D11 really is standalone and you don't need anything from 9 to understand it and use it effectively. By going straight to 11 you get to skip a lot of the outdated cruft and annoying design decisions in 9, so it really can be easier.

Rather than hypothesising about the contents of books, why not check them out down your local library or store? Or at least ask around here for opinions on titles that look interesting?

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


Direct3D 9 supports Xbox360 and Windows XP, whereas D3D11 does not.

Direct3D 11 supports Windows Vista onwards only, but can run on earlier D3D9-level hardware using feature levels.


Ok, that;s clear, but does Direct3D 9 support Vista and Windows 7 ? In other words, can someone install DirectX 9.0 SDK on Windows 7 and develop a game that will run on WinXp to Win 7 and above ?

This topic is closed to new replies.

Advertisement