Sign in to follow this  
Hnry

DirectX 9 compared to 10/11?

Recommended Posts

Currently I'm limited to DX9 because of my GPU doesn't support any newer version (and software rendering 10/11 is just simply too sloooowwwwww). I have just started learning a while ago but I'm kinda not motivated because people have told me it's not worth it to learn DX9 because 10 and 11 are so different that I would have to relearn most things.

Is this really true? I mean like people who made games with DX9 probably learnt new techniques alot easier than people with no experience even if there are big changes. And isn't DX9 still good if I want to support older hardware?

I hope DX9 is still worth learning and I can get more motivated again. :D

Share this post


Link to post
Share on other sites
No, it's not true at all. It's true that the difference between 10 & 9 is larger than between any two previous versions, but most of it is still the same in essence.

If you're asking a question like this then the new stuff in DX10 I suggest you ignore anyway, at least for a while. Our engine is DX9 only and will be for some time yet - until XP is completely and utterly dead. I have a few earmarked uses for the newer features in DX10, but none of them are must haves in the real world - our engine already does everything it intended to do with DX9.

Share this post


Link to post
Share on other sites
I'm working as a graphics programmer at the moment, and when it comes down to it, knowledge of a particular API is just a project-specific detail.
The knowledge that carries over from one project to the next is higher-level than the API -- it's about how graphics APIs work in general.

They're all similar (though each new generation does remove some features, add some features, and change 'best practices'), and once you've learnt how to use one, then learning the next one is a lot easier.

There's also a lot of general-purpose stuff that you'll learn for any graphics API, like all the different matrices involved, or thinking in different coordinate systems ("spaces"), how shaders work, what texture formats you can use, different methods of animation, etc...
[edit]
Quote:
Original post by Evil Steve
It's the only option if you intend to support Windows XP or any non-DX10 graphics hardware.
*cough* or GL *cough*

Share this post


Link to post
Share on other sites
DX9 is certainly still worth learning - It's the only option if you intend to support Windows XP or any non-DX10 graphics hardware.

Stay away from the fixed function pipeline though, that's all gone in DX10 - just stick with shaders and you'll be fine.

Share this post


Link to post
Share on other sites
Thank you guys! I feel alot more motivated to again. :D

Quote:
Original post by Hodgman
There's also a lot of general-purpose stuff that you'll learn for any graphics API, like all the different matrices involved, or thinking in different coordinate systems ("spaces"), how shaders work, what texture formats you can use, different methods of animation, etc...

Yeah, I was thinking it would be like this. Just like with programming languages; it's easy to learn new language if I laready know programming logic and methods from another language.

Quote:
Original post by Evil Steve
DX9 is certainly still worth learning - It's the only option if you intend to support Windows XP or any non-DX10 graphics hardware.

Stay away from the fixed function pipeline though, that's all gone in DX10 - just stick with shaders and you'll be fine.

Thanks for the tip, I'll try to stay away from it! :)

Share this post


Link to post
Share on other sites
Well, one thing worth noting is that you can use DirectX 11 to make your engine without having a DX11 capable card, as I do. I have a GTS 250 which can only support DX10, but develop without issue using DX11. The good news is DX11 is backwards compatible with hardware.

I made the transition from DX9 to DX11 a couple of months back and I found it hard to be honest. DX9 was a lot easier to learn for me. There's a fair bit more you have to do for yourself in DX11, with the gain of being more flexible/powerful a tool I suppose. Initializing the device for example is about twice the code. Another large part of the reason I found it harder was cos I was foolishly using fixed pipeline functions in DX9 so shaders were a whole other ball game for me.

Its up to you, but if you are going to learn one or the other it seems to me that its wiser to learn the more up to date version.

Share this post


Link to post
Share on other sites
For both learning Dx9 and shaders, consider buying Frank Luna's book Introduction to 3D Game Programming With DirectX 9.0c - A Shader Approach. All the source code used in the book is available for download on the book's website.

Share this post


Link to post
Share on other sites
You might also be interested in the Wild Magic Engine, which abstracts across software, OpenGL, and Direct3D 9 renderers - especially if you are interested in working with other APIs in the future. If I recall correctly, the latest version is shader based and you can always pick up one of Dave's books for a deep understanding of what he is doing.

As already mentioned above, if you aren't running XP you can start using DX11 now and just target one of the DX9 feature levels. Then you can just use the features available on your hardware and add in new ones later (when you upgrade hardware) without having to rewrite a big chunk of code.

Share this post


Link to post
Share on other sites
Quote:
Original post by rouncED
my advice is get a new video card pronto and work with the newer api, its ten thousand times better.

As was already pointed out, this is unnecessary. The DirectX 11 API can be used with DirectX 9 hardware. You can in fact make it automatically fall back to 10.1, 10, and 9. It will obviously not give you access to Direct3D 11 features on your Direct3D 9 graphics hardware, but it will let you get used to the 11 API, and it's changes, instead.

Share this post


Link to post
Share on other sites

There is only one thing you can not do in dx 9 .
You cannot compile your shaders against pixel shader target 4.0 . In ps 4.0 you are not limited in number of instructions, uniforms and inputs (inputs? maybe not) used in pixel function.

Share this post


Link to post
Share on other sites
Quote:
Original post by JohnnyCode

There is only one thing you can not do in dx 9 .
You cannot compile your shaders against pixel shader target 4.0 . In ps 4.0 you are not limited in number of instructions, uniforms and inputs (inputs? maybe not) used in pixel function.


Also Geometry shaders, but it doesn't really end here, these are just *some* of the really big points.

Still, DX9 is great, I personally am still using DX9 and a lot of games run on DX9 and are graphically similar to DX10 games. Yes, there are improvements but it doesn't kill DX9, no.

Truth be told though, all new hardware sold has DX10 or greater support, If you want to go DX10 then go for it, but the previous points stand.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this