By now it is pretty well-known that MicroSoft is the king of software. However, there is one field of software that MicroSoft has not been able to infiltrate, an area of software that still thinks for itself, has no standards set, and constantly changes. That field is video game programming. DirectX is MicroSoft's way of trying to influence that field.
What it is:
DirectX is a Software Development Kit (SDK) primarily used for computer game programming, although it can be used for other purposes. It is a Component Object Model (COM) consisting of many interfaces. These interfaces are designed for programming computer games in Windows 9x, and are implemented in a set of runtime .DLLs. The DirectX SDK can be downloaded for free from Microsoft's website for about a month after each new version is released. After that, the SDK can be purchased on CD for about $9. The runtime .DLLs can be downloaded for free. Trust me, it's definitely worth the money. DirectX integrates 2D and 3D graphics and sound, input, and network play, among other things, to create the ultimate universal game programming SDK.
COM Down:
I guess the only easy way to think about it is that DirectX is composed of many components, and thus you can make the connection to COM. Each component has its own interfaces. The interfaces are nothing more than pure virtual classes. You create a template for the pure virtual class its definition. This becomes important later on when you access interface functions. Well, I'm not much of a COM guru, so I'll just leave everything at that. IF anyone out there knows a good place to learn more about COM, please mail me.
What the HEL?!
If you're planning on jumping into DirectX right now, there's something else you should know . . . but it's a good thing (in the words of Martha Stewart). DirectX has two ways of performing actions, and both take place in layers.
First, there is the Hardware Abstraction Layer (HAL), which allows DirectX to use hardware acceleration. Basically, if the hardware is there DirectX will use it because it's the fastest way to do anything.
Then there is the Hardware Emulation Layer (HEL), which DirectX uses if the proper hardware cannot be found. This is wicked cool because if the user's computer doesn't have the proper hardware, your code will still work, albeit slower.