Learning DirectX

Started by
9 comments, last by Yoyoyoyo 13 years, 1 month ago
Hi just started learning directx9, and found that Directx 11 has changed quite a lot of things, like the pipeline.
So should i bother learning directx9 or just shift to 11... The problem being i wont have access to 11 for a while until i can get myself a rig that supports it. Will the knowledge of Directx9 be usefull once i get started on 11, or will it be a waste of time ? Thanks.
Advertisement
If you've never used a 3d graphics API before, then there is a lot of theoretical knowledge which applies to virtually every API. You can pick up this knowledge on any API, and apply it on any other API.

On the other hand, most of the API-specific details learnt from DX9 API will be of little use in the DX11 API.

So the answer is "yes and no". Lots of abstract concepts will pass over from one to the next, the small details will all change.

Also, the min requirements for "a rig that supports DX11" is a DX9 video card and Windows Vista.
Ah so, with my dx10 laptop i can just go ahead with learning Directx11 on it? Would there be any problems, such as some functionality missing, wont work?
I just tried it, the program cant find the d3d11.dll file, hmm hmm. Thanks for your help anyway.
Guess you just need to install the DX11 runtimes from Microsoft then.

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

Thanks, that got me to the next level, although working through this;
http://www.directxtutorial.com/Tutorial11/B-A/BA2.aspx

I get an unhandled exception ;

Unhandled exception at 0x00341801 in DirectX 11 learning.exe: 0xC0000005: Access violation reading location 0x00000000.

So a few probs for me to chew on. Appreciate the help, looking up this error seems it has something to do with a pointer error.

Unhandled exception at .... in ....: 0xC0000005: Access violation reading location 0x00000000.
Thats saying you tried to read from a NULL pointer. If you run your code from a debugger, it should stop on the line where the NULL pointer was used.

It could be that a D3D function has failed at some point and returned NULL and you've used the result without checking if it's ok.

[quote name='Rexxaw(Forgrim's mate)' timestamp='1299496872' post='4782767']
Unhandled exception at .... in ....: 0xC0000005: Access violation reading location 0x00000000.
Thats saying you tried to read from a NULL pointer. If you run your code from a debugger, it should stop on the line where the NULL pointer was used.

It could be that a D3D function has failed at some point and returned NULL and you've used the result without checking if it's ok.
[/quote]

Thanks for the heads up Hodgman. Though Im particularly noob in terms of c++ and graphics API's, and this was a cut and paste job from the tutorial just to test the IDE setup.

But it does lead me to a question about learning Directx in general. I'm after Frank d Luna's book on Directx10, as it will be a coherent text to learn from, rather than bits and pieces assimilated from the net, can't wait till i have it in my hands :) But id like to know, will this knowledge from Directx10, apply to 11, or will it be another great leap(and time wasted on learning legacy techniques)?
Cheers.

[quote name='Hodgman' timestamp='1299499350' post='4782775']
[quote name='Rexxaw(Forgrim's mate)' timestamp='1299496872' post='4782767']
Unhandled exception at .... in ....: 0xC0000005: Access violation reading location 0x00000000.
Thats saying you tried to read from a NULL pointer. If you run your code from a debugger, it should stop on the line where the NULL pointer was used.

It could be that a D3D function has failed at some point and returned NULL and you've used the result without checking if it's ok.
[/quote]

Thanks for the heads up Hodgman. Though Im particularly noob in terms of c++ and graphics API's, and this was a cut and paste job from the tutorial just to test the IDE setup.

But it does lead me to a question about learning Directx in general. I'm after Frank d Luna's book on Directx10, as it will be a coherent text to learn from, rather than bits and pieces assimilated from the net, can't wait till i have it in my hands :) But id like to know, will this knowledge from Directx10, apply to 11, or will it be another great leap(and time wasted on learning legacy techniques)?
Cheers.
[/quote]The D3D11 API is quite similar in structure to the D3D10 API, with a couple of big exceptions. D3D11 uses the concept of device contexts, which is a big departure from the older style devices... But still, if you want to learn D3D11, D3D10 is a good place to start - you can also check out our D3D10 book (its free and online, so you can look at it now - see the link in my signature). I wouldn't assume that a book is the best way to learn the API, since it can be helpful to see real examples in a running sample. Also, if you are getting started with D3D11, you can download my engine as well from codeplex (that link is also in my signature...) which will cover most of the basics.

Good luck!
If you as you say a "noob" to C++, you should really learn the language first before jumping into something you are going to have a hard time understanding. Can you make a random number guessing game without finding a already programmed game to look at? or Hangman, or even a text-based RPG with a minimum of 3 areas to explore? If you can do those effortlessly than maybe you aren't as noob as you think, but considering you are being told about null pointers I assume these would be a challenge or at least the last 2. I am not trying to be mean, but only trying to help. Learn about STL storage containers, pointers, references, etc... C++ isn't about memorizing and DirectX isn't about copy and pasting code, there is no skip to know it all fast steps. You are going to have to put in the real time. I know you wanted help with DirectX 9 or 11 but I would say considering your follow-up post focus on just C++ for now, and to get a grasp on how graphic API's work I would check out SFML or SDL for a little bit and make 2D games until your knowledge of how they work better suit you and move to DirectX. I did that and I understand DirectX a lot better than I did 2 years ago when I first started messing with DirectX (I just recently got back into DirectX). Anyways I hope what I said helps you out, if not my apologies I tried.

This topic is closed to new replies.

Advertisement