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

Started by
58 comments, last by Bulma 17 years, 9 months ago
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.
Advertisement
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.
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.
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.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
Thanks for all the replies so far - I'll see about putting them together into the intended FAQ entry sometime tomorrow [smile]

Cheers,
Jack

<hr align="left" width="25%" />
Jack Hoxley <small>[</small><small> Forum FAQ | Revised FAQ | MVP Profile | Developer Journal ]</small>

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]
Books.
I have not found any other resources very helpful for starting out.
They are only good if you have the basics down.
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.

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

This topic is closed to new replies.

Advertisement