DirectX 9 or DirectX 10 for starters?
Asked Answered
A

9

10

I want to do projects to make my resume more appealing to game companies. So I am going to start buying books. But I don't know rather to read DirectX 9 or 10 api books to start off with. DirectX10 is great, but it seems the industry is moving slow to 10. so should I use 9 or go with 10 ??

Accomplishment answered 3/4, 2010 at 15:38 Comment(4)
If developing for the largest possible audience, DX9. Otherwise, DX11.Translocate
@uberwulu Not anymore. Win 7 broke 50% late 2011 / early 2012Latona
@bobobobo: So if DX11 is supported on over 50%, and DX9 is still supported on 100%, then DX9 will still reach a wider audience than DX11, so it still holds true.Translocate
You want to focus on one area. You can't focus on everything such as physics, game mechanics, sound. So if your going the route of graphics. you should focus on simply importing vectors from editors. import maps, and creating prop managers. That is it!! anything else, you will be learning a bunch of nothing. if you want to do physics, then use a preexisting graphics like ogre 3d. I believe ogre 3d is open source so its always good to dissect things that are already built. you can learn faster.Accomplishment
R
14

I would suggest learning the basics using directx9 and then rapidly moving on to dx11. DirectX11 is harder to get started in than DirectX9 because it's slightly more complex but also a lot of the utility functions in D3DX are no longer there, or have been moved to source code like the effects framework. This is no bad thing, but it does make it signifiacantly more complex to learn as you have to learn a lot more things at once.

Spend 2 or 3 weeks learning DX9 then move to DX11 for "real" work :P

Learn basic DX9 using the fixed pipeline and d3dx for loading models etc. It's a lot simpler than DX11 and much better documented, and you'll get a triangle and then a model on screen very much faster. Play with that until you completely understand the basic concepts and tranformations.

But then rewrite it all using shaders only. You'll need to use them in DX10/11 anyway but it's a lot easier to learn when you already have a working framework of code, and it's a lot simpler to get that working in DX9.

Once you have that working, learn DX11. You'll have to switch math libraries. You'll have to invent your own model formats and loaders. You'll have to either invent your own effects framework or use the example one, but they are all much easier now you already know the basics of 3d and programming shaders.

Rugger answered 4/4, 2010 at 10:49 Comment(1)
The main reason that DX9 seems 'simpler' is you can leverage the legacy fixed-function pipeline to do basic rendering without having to learn HLSL right off the bat, but then you'll have to unlearn that immediately to learn 'modern' GPU programming. Better to just use DX11 and the DirectX Tool Kit which gives you a ton of starter code including 'stock' shaders.Ellingston
S
3

TBH further to OneOfOne's comment if you know how to do 3D development in GL, D3D9, D3D10 or D3D11 then you can transfer those skills to any of the others with a little bit of work.

Personally I'd aim for D3D11 as that way you are learning the cutting edge. You'll find you'll be able to do GL, D3D9 or D3D10 with a little work. Do enough work on the theory and you'll discover that its not even that hard to transfer the skills to a fully software engine.

Serried answered 3/4, 2010 at 16:9 Comment(6)
Matching the right version of DirectX on the resume would be important only for the entry-level code monkeys.Belshin
TBH I got into doing PS2 development because the DX7/8 engine I wrote was good. My TD was impressed and over the next few years a colleague and I wrote, arguably, one of the most advanced PS2 engines around. Shame it was so poorly utilised :(Serried
that sounds good. But D3D11 absolutely has no resources from any publishers. My road to understanding DX would be more difficult.Accomplishment
I taught myself DX5 from the examples. Admittedly I'd already written a basic software engine by that point ...Serried
Also just because no publishers are releasing D3D11 games doesn't mean that 6 months later when you can rightly say you know what you are talking about on the API that that will be the case. If you learn D3D9 you are likely to be learning a dieing system. To my knowledge EVERYONE who was doing D3D10 is now using D3D11. You can do D3D11 on D3D10 hardware so, while you don't get all the bells and whistles, you are still using a common API between modern systems. Its also worth noting that I just upgraded my wife's laptop after her 8 year old one died and for £400 we are getting a DX10 laptop.Serried
Also D3D10 is an almost strict subset of D3D11, so if you know 11 then you know 10 as well.Foldboat
B
2

If your intention is really to learn a skill that you would use in the game industry, stick with DirectX 9. Since DirectX 10 and 11 both require Vista or Window 7, game developers are still mostly ignoring them and targeting DirectX 9 in order to have support for Windows XP.

That being said, it doesn't really matter which you start with. The differences are not that large. If you understand the concepts behind 3D APIs and how the GPU pipeline works, you can pick up any of the three or even OpenGL with minimal effort.

Bluhm answered 24/4, 2010 at 15:34 Comment(4)
I tend to disagree. If you grasped D3D11 then you can handle D3D9 with ease. It's not a good idea to start with a soon to be obsolete API which also has far too much legacy (fixed function) stuff which should be ignored. That is just confusing for the beginner.Foldboat
The only "obsolete" parts of the dx9 API are advanced topics that a beginner would never get into. I agree that it would be a bad idea to waste time learning the intricacies of texture sampler states and fixed function bump mapping or cube mapping, but 90% of dx9 maps directly to dx11. The API has been cleaned up a bit, but things work more or less the same way. The major steps for a beginner to learn in 3D, geometry transformation, z-buffering, alpha-blending, etc, are pretty much API independent. Just stick with shader-oriented rendering for more advanced stuff in dx9.Bluhm
I've used D3D since version 7 and D3D10 and 11 give you a better view about what's actually happening on the GPUs than older ones. The learning curve may be steeper, but after you grasped the concepts you should know exactly what's going on. With D3D9 on the other hand you have fixed function and much other legacy stuff that's only distracting in my opinion. Better learn it the "right way" from the beginning.Foldboat
@Axel in fact they require you to understand what's going on in the GPU!Latona
L
1

Fact is, you need to learn both.

As long as 50% of gamers are still on WinXP, you're going to need to be able to program in Direct3D9.

D3D9 isn't any easier to get started with than D3D10/11. Its the same principles, with vertices to be placed, normals to be calculated, and meshes to be rendered. Whether you're creating a ID3D11BlendState structure or calling IDirect3DDevice9::SetRenderState(), its the same concept, just different ways of doing it.

After working with d3d11 a couple of days, I've come to think of it as better than DX9 in a lot of ways. For one, you're able to use the full caps of the GPU including geometry shaders. 2nd, it forces you to fully understand the graphics pipeline to even draw anything (note how functions are named after the stage of the pipeline they affect: here: (IA* fcns: input-assembler stage, OM* fcns: output-merger stage etc) ). This may result in a slightly larger INITIAL startup curve, but once you get it, its not any harder than D3D9 and is better, since the very naming of the functions helps concepts stick.

So get going on both, and learning them in tandem may help reduce the amount of effort you spend learning deprecated API's/methods of doing things from DX9 (ie you really want to spend more time using shaders, and don't use the fixed function pipeline section of DX9 too much).

Latona answered 9/7, 2011 at 17:26 Comment(2)
downvoter, explain your reason OR YOUR DOWNVOTE WILL BE REMOVED!!Latona
In general, the only reason you'd ever use DX9 is to target Windows XP, in which case you also need to use legacy developer tools, legacy SDKs, legacy support libraries and middleware, and aim at extremely old/low level machines since they primarily exist in China, South Korea, and Russia. If you are doing anything else, save yourself a lot of pain and focus on DirectX 11. If you are aiming at Steam's audience, it's a no brainer as Windows XP is less than %5.Ellingston
B
0

You can check Luna's books for DX9 /DX11(I suggest you start with 11). You can check out http://www.rastertek.com/tutdx11.html but he doesn't explain everything so you can go in Luna s book to see what is with those functions or properties

Bistre answered 5/1, 2013 at 17:5 Comment(0)
T
0

With some little exceptions, DX10 is just a legacy free DX9. For example DX9 had build in options for rendering Flatshaded, Textured or using a Shader. In DX10 these options are gone, you always have to use a real shader. If you want to do flatshading, write a HLSL shader that does flat shading.

So I would suggest you learn DX10 (or DX11). You will be able to adopt fast to DX9 but with a more modern coding style by not using legacy functions. They can be quiet confusing, so DX10 will focus you on relevant things.

If you are a real beginner, and setting up a vertex-buffer to create a single triangle is confusing you (as real 3D-Programmer you are no more interesten in single triangles) I even would suggest to start with OpenGL. You will have faster success, but in reality this can be a little bit distracting as DX9-Legacy if you want to focus on modern 3D-Coding.

Trug answered 19/4, 2013 at 11:6 Comment(0)
L
0

Yes do not waste your time with DX10 it was never really adopted as the industry standard for any period of time, there wasn't any big enough changes to warrant people upgrading from DX9 but for DX11 there was.

Lithomarge answered 31/8, 2013 at 9:21 Comment(0)
A
0

I suggest directx 11, there's no reason in my opinion to waste time on deprecated functions or techniques. Learning shaders from the start will make things way more clear

Aekerly answered 29/7, 2014 at 15:11 Comment(0)
B
-1

Try doing the samples from the sample folder of both 9 and 10, and if your computer can support it, 11. This is what I am doing.

Brighton answered 1/6, 2016 at 23:38 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.