• Advertisement
Sign in to follow this  

Your moderator needs your help: How did *you* start learning Direct3D?

This topic is 4240 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Afternoon all, Those of you that are following my journal will know that I'm (slowly) working on an update for this forum's FAQ. It's slowly getting there, but I've hit one entry where I could really do with some input from you [wink] D3D #1: What should I learn first? Whilst I've got a fair few bits-n-pieces its been a long time since I was in the position to be asking that question. Thus it'd be appreciated if you could share any details about what you did (or are doing) to learn the Direct3D API.
  1. Did you start with tutorials/examples?
  2. Which website(s) did you download samples/tutorials from?
  3. Which book(s) did you buy/read to help you get on your way? Were they any good?
  4. Did you "read around" the subject - general graphics programming, mathematics... If so, are there any particular resources you used?
  5. Did you jump straight into 3D or start with 2D?
  6. Did you read the SDK documentation and tutorials?
I'm not too interested in covering the stuff about SDK's/IDE's/languages - thats covered elsewhere. I'm only looking to go over the Direct3D specific stuff. Cheers, Jack

Share this post


Link to post
Share on other sites
Advertisement
Good to hear the faq is not dead ^^

Well, for my part, I started learning 3D by the maths. Vector / Matrix algebra, etc. That was at school. Then for my personal interest, I started playing with OpenGL since it's quite straightforward and easy to use.
And I would really recommend doing this, because when I started working with Direct3D, I was already familiar with the theory of 3D (I knew what a view / world / projection matrix was and how to use them, etc.) and I only had to learn the API ... and that is difficult enough ^^

So :

1) learn the basics of 3D (vector / matrix mathematics, what is rasterization, etc. All the basic stuff)
2) download the DirectX SDK and start playing with the samples.

The samples were my primary source of documentation. And the second source was here ^^

I don't know if this'll be of any help, but that's how I learned Direct3D, and I'm quite happy with that. When I see people playing with the samples who don't even know what's a view matrix and how it interacts with the scene ... I really think that the theory should be learnt first ^^

Share this post


Link to post
Share on other sites
1 -
At first I started with tutorials and examples, but they didn't help me joining small fractions of code they gave me. I need to see a big picture and tutorials in general are for quick learning given you know the general picture of the API.

I then went to books, but still the majority of the ones I looked at were much like the tutorials, just small fragments of the API with little to no explanation of why they are there any only the small implementation to connect them.

2 -
I found the most help starting off at DrunkenHyena's page, the tutorials were good and lead me in the direction I wanted.

3 -
I don't really remember, it was a long time ago and the books weren't of much help. They're probably packed away somewhere, the books I really use are in my posession.

4 -
Well, what I actually did was get a feel of the API and it's contents by scanning MSDN. It's the only way I could attach everything together. I ended up using MSDN as my primary resource.

5 -
2D first, and still. I do a bit of 3D but for the most part I like 2D games much better.

6 -
The SDK, a lot. Sometimes I go grab an article, read it through then look up those on MSDN so I can get an idea of it's use. I don't like being bound by one method of thinking.

Share this post


Link to post
Share on other sites
Did you start with tutorials/examples?
At first I played around with tutorials, but moved on to books which seemed a little more helpful.

Which website(s) did you download samples/tutorials from?
Which book(s) did you buy/read to help you get on your way? Were they any good?
I started with "Programming Role-Playing Games with DirectX" (B+) and "Special Effects Game Programming with DirectX"(C+). But it wasn't until I discovered "Introduction to 3D Game Programming with DirectX 9.0"(A) that I really started to get a grasp on everything. Frank's next book "Introduction to 3D Game Programming with DirectX 9.0c: A Shader Approach"(A+) is the book where I have learned what I know about shaders. It helped me to read those books and tutorials to see the different ways of doing the same thing.

Did you "read around" the subject - general graphics programming, mathematics... If so, are there any particular resources you used?

Did you jump straight into 3D or start with 2D?
I fooled around with 2D a good while back, but wanted to get into the 3D stuff. The 2D didn't really help me learn 3D.

Did you read the SDK documentation and tutorials?
I didn't read them until I had a grasp on things. The documentation is a necessary reference.

Share this post


Link to post
Share on other sites
1. I only did a few very basic tutorials before trying to implement 3D into my own engine. After that I read trough some samples and added functionality.
2. toymaker.info and gamedev where my two sources in the beginning. Read about 50 or so pages in the forum in a row.
3. I read Real-time 3D terrain engines using C++ and DirectX 9 by Gregg Snook and I found it very helpful.
4. I didn't when starting out and because of my very limited knowledge of Math when I begun I probably should. I would recommend people to do so but I doubt I would have still.
5. I had worked some with SDL before starting with Direct 3D but very little. There are differences sure but I think that a basic 3D-engine is as easy as a good 2D-engine.
6. Yes, not all the documentation at first since there is so much information but before the project I was working on was completed I had read most of it.

Share this post


Link to post
Share on other sites
Quote:
Original post by jollyjeffers
Did you start with tutorials/examples?

Yes, if I remember correctly.
Quote:
Which website(s) did you download samples/tutorials from?

I started with the DXSDK samples, then moved to Andy Pike I think.
Quote:
Which book(s) did you buy/read to help you get on your way? Were they any good?

I only have shader-related books:

  1. Shader X2: Introductions
  2. Shader X2: Advanced Effects
  3. Shader X3
  4. Shader X4
  5. GPU Gems


I wrote for X4 and X5...so pick up a copy [grin]
Quote:
Did you "read around" the subject - general graphics programming, mathematics... If so, are there any particular resources you used?

Graphics forum FAQ and Real-Time-Rendering website
Quote:
Did you jump straight into 3D or start with 2D?

I dabbled in 2D first, before D3D got really big.
Quote:
Did you read the SDK documentation and tutorials?

Yea, although I don't really look at it much anymore.

Share this post


Link to post
Share on other sites
1. Yes.

2. When I was learning DX8 with VB6, jollyjeffers' old site was my main resource. As for DirectX9/C++, drunkenhyena's site was a huge help.

3. I bought Tom Miller's DirectX kickstart book when I began to use MDX. I thought the book was great, though it would probably be more useful to a complete beginner with DirectX.

4. I mainly just jumped straight into DirectX. I already had a decent grasp of trig for most vextor math. Most other info I have learned accross the way through posts here and various tutorials.

5. I did some 2D with Visual Basic (basic picture boxes, then bitblt) before moving on to 3D stuff with DirectX.

6. Yes, they were a great help starting out and still for a quick reference.

Share this post


Link to post
Share on other sites
I started with the SDK examples, and then went my own path from there. It didn't hurt that I already knew OpenGL, and computer graphics in general, pretty well, though. Learning DX was mostly a matter of learning the API specifics and conventions (rather than learning graphics from scratch).

Share this post


Link to post
Share on other sites
Well, I have been using OpenGL for quite long, and I was familiar with shaders and just advanced stuff. The Direct3D API is not much different. The basics are the same, so I use mainly the SDK documentations.

Share this post


Link to post
Share on other sites
1. Read Intro to DX by Frank Luna and later proofread his 2nd book
2. Read Essential Math for Games and Interactive Applications (when I realized part way into the first book I didn't understand the linear algebra concepts)
3. After books, study SDK samples with DXUT, and write first game using .x files in SDK.
4. Found GameDev, and from here ToyMaker and TrippleBuffer samples on .x files.

Share this post


Link to post
Share on other sites
Quote:
Did you start with tutorials/examples?

Yes.

Quote:
Which website(s) did you download samples/tutorials from?

You're going to call me a whore, but I started with DX4VB. Used the copy here at GDNET rather than your site though.

Quote:
Which book(s) did you buy/read to help you get on your way? Were they any good?

DXSDK FTW.

Quote:
Did you "read around" the subject - general graphics programming, mathematics... If so, are there any particular resources you used?

Not initially, most of the stuff (matrix math, etc) I picked up from the SDK. (It's very handy >_>)

Quote:
Did you jump straight into 3D or start with 2D?

2D >_>

Quote:
Did you read the SDK documentation and tutorials?

Hellz yeah. <3 <3 <3 teh SDK. And DX4VB.

Share this post


Link to post
Share on other sites
Quote:

Did you start with tutorials/examples?


Yup.

Quote:

Which website(s) did you download samples/tutorials from?


Andy Pike
Drunken Hyena
Both great resources.

Quote:

Which book(s) did you buy/read to help you get on your way? Were they any good?


Sams Teach Yoursel Game Programming With DirectX In 21 Days
Very good book goes through creating the engine and an RPG.

Quote:

Did you "read around" the subject - general graphics programming, mathematics... If so, are there any particular resources you used?


Not really.

Quote:

Did you jump straight into 3D or start with 2D?


Started With 2D.

Quote:

Did you read the SDK documentation and tutorials?


Ive read the Direct3D Tutorials and DirectInput Tutorials after I knew what i was doing so it didnt help me much. I wouldnt say that the SDK Doc is well made as it doesnt describe the tutorials to detail.

Share this post


Link to post
Share on other sites
I'd done some minor hobby stuff in DDraw 3, which was horrible (DDraw, not my stuff), and years later on a whim I applied at a game company and was hired. I was forced to learn D3D rather quickly.

They already had a very basic engine up and running in DX8, rendering meshes and morphing meshes in software, doing all drawing with DIPUP. First I was thrown deep into 3D math, doing bone transformations in software. Next I learned about TextureStageStates to make new effects. I found nVidia's old DX7 BlendView was useful to get an idea of how it worked. After that improvements came from browsing the SDK, and from nVidia's white papers, which involved switching to vertex/index buffers, multiple bone influences per vertex, shaders, render queue sorting, etc.

I didn't really start with tutorials or examples, no. Everything was pretty lacking back then anyway.

nVidia's developer whitepapers are a good source of info. Dig into their older papers, rather than the new ones pushing the latest tech.

I've got no D3D books. The SDK is clear enough, and won't have an author's misinterpretations of the spec.

I was already a competent ASM and C coder, working on various computers and embedded systems, and was familiar with coding 2D games (back on the C64, Amiga, PC in DOS, etc.). 3D was pretty much all new to me, but I don't remember how I picked up the concepts.

Pretty much straight to 3D. Nothing I'd done in 2D in Windows was noteworthy. I'd done some neat 2D things in DOS, on Amigas, C64, etc.

I didn't follow the SDK tutorials, but the parts about performance pitfalls, etc. I did read. Having a functioning engine to play around in made it a bit easier to just use the SDK as an API reference and try things out.

Share this post


Link to post
Share on other sites
I purchased two books:
The Zen of Direct3D Game Programming (Peter Walsh)
Beginning Direct3D Game Programming (good ol' Wolfgang Engel)

It was between these two books that I learnt a lot of the basics. Zen covered a lot of the gritty details, particularly of transformations and things, while Beginning looked at a lot of higher level stuff, including lots of important concepts with textures, models, etc.

After that, it gets a little hazy. I did some smallish projects and eventually ended up in OpenGL (using Astle and Hawkins' book). It was in OGL that I began learning about shaders (Cg, basically learned in #graphicsdev), as well as doing a lot of the initial terrain things. A lot of intermediate work with understanding how to do graphics engines and things happened there, and I finally came back to D3D, as well as moving into a managed environment, in January.

After the books, I'd say that most of what I learned came from the net, briefly from tutorials and later papers initially. Most of my learning over the last year can be traced back to #graphicsdev.

Share this post


Link to post
Share on other sites
Thanks for all the replies so far - I'll see about putting them together into the intended FAQ entry sometime tomorrow [smile]

Cheers,
Jack

Share this post


Link to post
Share on other sites
Well I'm still in the process of learning D3D, so maybe I’m not in the best position to contribute but...

I started with D3D in the DirectX SDK examples, and found it to be rather restricting, in that it didn’t always explain why certain variables were used for certain things, instead just saying to put X into spot Y. The SDK does however provide an absolutely invaluable resource for looking up the specifics on anything.

I then turned to Andy Pike, which is mentioned in the current site listing here for good tutorials, and found it out dated, using D3D7, which used a lot of stuff that doesn’t get used in D3D9 programs, especially with the constants that are declared, and the setup of the display. It did however provide a good source of just giving what was actually different along each step, instead of throwing in a bunch of extra functionality that is more windows-based instead of DirectX based, and provided very concise comments about many of the things it did, and some explanation.

By far the most valuable thing for me though, is just the time required to experiment with things, and the ‘article search’ area of this website [since I’m WAY too cheap to buy a book on it when I don’t absolutely have to]. It didn’t provide a cover-all, but it enabled me to quickly fill in gaps in my knowledge, like how to enable transparency.

So basicly for me, I read around the subject till I understood enough to get started, rummaged around for every example I could find, and hand-typed all of them that I found to be useful [no copy pasting], and looked up everything and anything I was fuzzy or curious about, as soon as I was curious about it, in the SDK. [I’m still learning, as it’s obviously a large thing to learn, but its proceeding well, and I understand what I’m doing. It’s just a matter of learning all the little functions to do this-and-that now]

Share this post


Link to post
Share on other sites
Books.
I have not found any other resources very helpful for starting out.
They are only good if you have the basics down.

Share this post


Link to post
Share on other sites
One of my college courses was focused on direct X, which is more or less is what got me started. We had no text book, as the instructor felt that there was no worthy textbook out there (a point I have more or less come to agree with), so our resource was the sdk documentation, and of course the samples that come with it.

I wouldn't entirely recommend this method without some sort of instructor. It can be pretty overwhelming at first. What I will recommend is, while learning, be it from a textbook or online tutorial, having the sdk documentation open at all times is a must. Learn what the calls you're copying and pasting are doing, and how they can otherwise be used.

While building my first direct X applications, I did spend a lot of time looking up resources on the internet. Many topics landed me here at gamedev.net. I believe Drunken Hyena was also quite helpful. I'd just recommend to anyone else doing so to remember that most online tutorials have little to no design consideration, and a good way to learn how something works is to rewrite it yourself to be as flexible as possible.

Hopefully I didn't stray too far from the point.

Share this post


Link to post
Share on other sites
Walking through a book.

Obviously after getting a solid grasp on C/C++. I was initially turned off by DX when I was first starting out (DX 6-7 time frame) so I learned OpenGL instead...until MS got it's act together, I switched to D3D on DX 8.

I think people should start out by doing 2D work, and then transition into 3D. But things are different today, it wouldn't be too bad to start out doing 3D apps. Back when I started there was DirectDraw, now they're one in the same, so I don't know what I would have done.

I do feel people should get a book and walk their way through it if they're just starting out.

- Dan

Share this post


Link to post
Share on other sites
Quote:
1. Did you start with tutorials/examples?

Yup

Quote:
2. Which website(s) did you download samples/tutorials from?

GameDev.net, two-kings.de, and www.planetsourcecode.com. Steve also has a few good ones at his site.
Quote:
3. Which book(s) did you buy/read to help you get on your way? Were they any good?

Intro To 3D Game Programming With DirectX 9.0 - good
Zen of Direct3D Game Programing - good, but has bad programming techniques (IMO)
Isometric Game Programming w/ DirectX 7.0 - decent

Quote:
4. Did you "read around" the subject - general graphics programming, mathematics... If so, are there any particular resources you used?

3D Graphics Programming: Games and Beyond - good
3D Math Primer for Graphics and Game Development - good

Quote:
5. Did you jump straight into 3D or start with 2D?

Started with 2D then learned some 3D. Still using 2D.
Quote:
6. Did you read the SDK documentation and tutorials?

Yes. Several times.

Share this post


Link to post
Share on other sites
- Did you start with tutorials/examples?

Yes, tutorials - the SDK samples confused me.

- Which website(s) did you download samples/tutorials from?

DrunkenHyena, AndyPike.com, DX4VB

- Which book(s) did you buy/read to help you get on your way? Were they any good?

None

- Did you "read around" the subject - general graphics programming, mathematics... If so, are there any particular resources you used?

Resources on GDNet, didn't find them very helpful at all tbh.

- Did you jump straight into 3D or start with 2D?

I always used 2D on the Amiga, my first PC 'game' project was in 3d (yes n00b).

- Did you read the SDK documentation and tutorials?

Yes, but I found them too complex for me.

Bear in mind I'm now primarily an OpenGL programmer, we had NeHe - needed that for DX...

Share this post


Link to post
Share on other sites
Here are my .02 as a transitioning user:
Quote:
1. Did you start with tutorials/examples?

No. I was already confident in my skill and knowledge so in the beginning I just read the SDK. Later, I didn't realize some workings so I started looking for tutorials but I later abandoned the idea of reading them. I am confident experimentation to be a better reference.
Quote:
2. Which website(s) did you download samples/tutorials from?

I didn't download anything besides the SDK examples but I remember I looked at The X zone and Drunken hyena, besides a few others I don't remember anymore. One in particular was very minimalistic and seemed like a wiki... I googled for resources and looked for inter-links.
Quote:
3. Which book(s) did you buy/read to help you get on your way? Were they any good?

I didn't read books for this transioning D3D but I already owned some books... Real Time Rendering first edition in particular and I am going to get ShaderX and GPU gems for the techniques. I guess correct answer is NO / NA.
Quote:
4. Did you "read around" the subject - general graphics programming, mathematics... If so, are there any particular resources you used?

I confronted the infamous batching problem on nvidia's developer site, in particular the event papers. I tried to read about COM (from MS SDK) but after a while, I realized it's overkill for me and forgot about it. The official newsgroups are sometimes useful but the message rate is quite high so I end up reading almost nothing.
I also looked at the platform SDK.

Again, I didn't go far from this because I was confident in my skills. I don't know if this is YES or NO.

Quote:
5. Did you jump straight into 3D or start with 2D?

I would have started with 3D but I was needing an app which didn't require it, so I made up a 2D-in-3D app using ortho projections. If I wouldn't had this need, I would have gone for full 3D.
Quote:
6. Did you read the SDK documentation and tutorials?

SDK: yes, almost everything.
SDK tuts and workshop: yes but they didn't impress me
SDK examples: yes something is definetly useful (the HDR demo is great ;) )
Other tutorials: just quick glances. I didn't like the code style and sent everything to the trashcan.


Share this post


Link to post
Share on other sites
I started with DirectX. And with 2D. But the interaction with the API was pretty minimal back then. I just needed to learn a few functions to copy sprites to the screen. What else do you need?

When I changed to 3D, I actually learned most of what I knew about 3D rendering from the DirectX docs. How scary is that? Those little 'extra' pages thrown in are pretty helpful. I learned almost everything I know about advanced 3D math and transforms by pulling apart D3DX functions, one at a time. When I couldn't find the source to a function, I just researched the task online, mostly with Google.

I didn't really read any tutorials to learn the basics. Actually, I don't really read tutorials at all. Maybe I should start doing that, and stop posting so many questions on GameDev.

Share this post


Link to post
Share on other sites
I am actually still learning and don't consider myself an expert but I have tried about 4-5 times. I have already graduated college with a degree in C++ and consider that my main strength.

I attempted many times with "Programming Role Playing Games with DirectX" and that failed everytime.

The time I finally consider it a success(about a month ago) was when I dropped the book and used DirectX SDK tutorials. I just started creating a game/intro whatever I wanted to based on the tutorials.

1. Started out as black background (setup)
2. Big White Box
3. Added a texture/Logo to the white box
4. I did a text at the bottom, then had it scroll. learning Transformations etc.
5. Input push enter clear screen, esc exits.
6. Started using different states, enter went from intro to game state.
7. Learned Sprite and did a map
8. Made it Isometric (can be left out)
9. Multiple Layers

ok im going to stop now, but you get the point. I don't think learning can be done from someone telling you what to do or reading you will get burnt out. I had to sit down and just do whatever I wanted to do. The forums helped me many times I can't lie :-) But, when I was doing what I wanted to do it was more interesting to me and I couldn't stop.
Again I don't think I know a lot and I am still learning but everytime before that I was overwelmed and just gave up. This way I have been coding the whole time and learning. Not to mention having a blast :-)

Share this post


Link to post
Share on other sites
Quote:
Original post by Thors1982
I don't think learning can be done from someone telling you what to do or reading you will get burnt out. I had to sit down and just do whatever I wanted to do. The forums helped me many times I can't lie :-) But, when I was doing what I wanted to do it was more interesting to me and I couldn't stop.

What I like to do when following a book and writing code is to change what they are telling me to write into what I want to write that is very similar. Instead of "Hello World", I wrote "Access Denied" (matrix fan). Instead of creating a console window to print out fake employee records, I made mine show bounty hunter rewards for made-up wanted criminals.

Basically just change as much of it as possible into what you want to do, rather than following it word by word. You'll likely learn a lot more anyway. Because instead of following a set path, you're taking directions and making your own path to it.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement