tags:

views:

296

answers:

4

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 ??

A: 

Not really an answer, but rather a biased opinion since I'm a linux user. I highly recommend cross-platform solutions, opengl, unreal engine, etc. DirectX is great and all, but you can do the same for the most part using OpenGL / SDL / OpenAL and offer a product that people can run on their preferred operating systems.

OneOfOne
Definitly something I would recommend also. But in this case the poster specifically says he wants to make his resume more appealing so I suppose he thought about what to do to get the desired result :).
bastijn
+2  A: 

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.

Goz
Matching the right version of DirectX on the resume would be important only for the entry-level code monkeys.
Tadeusz A. Kadłubowski
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 :(
Goz
that sounds good. But D3D11 absolutely has no resources from any publishers. My road to understanding DX would be more difficult.
numerical25
I taught myself DX5 from the examples. Admittedly I'd already written a basic software engine by that point ...
Goz
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.
Goz
Also D3D10 is an almost strict subset of D3D11, so if you know 11 then you know 10 as well.
Axel Gneiting
+2  A: 

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.

John Burton
+1  A: 

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.

Alan
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.
Axel Gneiting
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.
Alan
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.
Axel Gneiting