Why is direct x so hard for me to understand? Usually I'm fast to catch on to things relating to programming, but this gives me headaches.

Has anyone tried learning Direct X? What was your experience?

Is it that it's just not up my alley?

Recommended Answers

All 14 Replies

Member Avatar for iamthwee

Are you using directX in a 3d environment. If so have you ever worked with 3d models/environments?

Personally, I always find it amusing when people pick up directX to write some sort of 3d game.

Why start from scratch. I'd say grab yourself a copy of 3d max or maya, or even blender. Create your models and environments there and make use of their already polished 3d games engines.

That's what I've done. The results are pretty impressive.

I found directx really hard. OpenGL was slightly easier but still hard IMHO

DirectX is hard because it's very raw. OpenGL is less raw, but not necessarily easier to learn. I would say, it's easier to start in OpenGL - you'll get that spinning triangle on the screen with less written code; it doesn't necessarily get harder, but you have to consider the OpenGL system state constantly, which can be confusing. Once you understand the basics of either, the other is easier to learn.

Why start from scratch.

Because it's fun, mentally stimulating and lets you do everything the way you want it, from the very beginning. Afterwards, you can look at it running and say. Wow. That's only happening because I explicitly told it to do that.

That said, it's also fun ( and fast ) to work with existing engines, although, the engines-in-3d-editors aren't my idea of highly polished and capable game engines..

DirectX is extremely large and is created as a library in a way that's not what most people are experienced with.
The programming paradigms used are not familiar to many people, so they have to cope with learning more than one thing at the same time.
If you're also not experienced with the programming language you're trying to use, and/or with animation/simulation/AI/whatever you're trying to use DirectX for you're in big trouble.
Most humans can learn one new skill at a time, some can learn two new skills at once, but hardly anyone can pick up all the new skills they need to acquire if they're trying to learn everything needed to write a game using DX all at the same time.

So take baby steps.
First learn your programming language.
Then learn to use that to make small programs that use each of the skills you're going to need to write that game on its own, without bothering with DirectX for now.
Then learn to use DirectX without bothering to write that entire game, just focus on learning the library on its own.
Only when you have done all that should you start putting those skills together. And don't try to put them all together at the same time. Again partition it, use combinations of first two, then three or more skills together.

It's a long process, but that's the only way to truly master things.

Is C# good for this? I'm pretty comfortable with it as a language.

I'll try the other suggestions, as to the small apps and so on.

Thanks for the input. The general consensus seems to be that DX is actually a lot harder than I orignally thought. I'll try tackling it from that new angle this time. Thanks again

Yeah, all MS samples for dirtectX are for C# or C++. There pushing C# + DirectX pretty hard because of XNA.

Do you understand 'basic 3D theory' that is, the math behind affine transforms / matrix algebra, vectors, projection into 2d space, etc? If you don't know how these things work in a practical sense; then you'll have a real problem with DirectX or OpenGL. ( If you're working in 2d only; I guess there's less to learn, although vector math is still quite useful in 2d ). If you want to do complex physics, spacial AI, or anything like that... well, it's nice to have a visualization framework to help you see what you're doing.. strictly speaking you don't 'need' one, but it's nice, and it helps.

I found playing around with Java3D http://java.sun.com/products/java-media/3D/ was quite helpful in getting my head around 3D concepts ( and it's good for visualizing/prototyping quickly ); the techniques involved aren't directly transferrable, since it tries to abstract most of the math into a scene-graph; which you don't get as-standard in DX or OGL, but it's a forgiving way to start with the basics, and to do anything complicated with it, you need to delve into the un-abstracted math side of things.

C# + XNA is also quite forgiving, it wraps much of DirectX's functionality, so you don't have to write so much code upfront.. you'd still need to have a decent idea of the 3D math basics though, to do anything beyond trivial. I don't mean by that, that you need to go study the theory / history behind the maths, learn the proofs, or generally understand WHY the maths works; but, knowing when and where to use each concept is invaluable.

High school age maths aught to do though

Dunno what high-school you went to, but they didn't teach 3D spaces at my school; certainly not at GCSE ( if that's "high school" ) level. I remember learning 2D triangle and vector basics; but nothing about projecting and transforming using 4x4 matrices, the intricities of 3D rotation, or anything atall about 3D surfaces, physics calculations in 3D, etc. The extra dimension does make alot of difference; unless you're only using 2D principles with 3D graphics..

ive managed quite a lot of opengl with just the GCSE stuff

Ah, me to, in terms of formal teaching; but I don't believe that you haven't done ( or won't do ) a load of 'extra-curricular' reasearch to augment that. :)

Ah, me to, in terms of formal teaching; but I don't believe that you haven't done ( or won't do ) a load of 'extra-curricular' reasearch to augment that. :)

I'd agree. The math of 3D transformation, physics, intersections, etc is beyond what I consider normal high school math. Some of the underpinnings such as trigonometry and matrices may be touched upon in some HS math curriculums, but the level of application required for 3D programming work is definately college level material.

Certainly it can be learned earlier by those more mathmatically inclined and self-directed, but in general you aren't likely to find many HS students in that category.

I am a Sophomore in high school and I haven't had a major problem yet picking up SDL + OpenGL in C. I think OpenGL is far easier to understand than DX. I 'd also suggest taking a look at maybe a scene graph or rendering library similar to Ogre3D. Which in many cases makes a lot of things easier.

Well buddy try to play that in 3 d environment.....

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.