Direct3D a été introduit avec la version 3.0 de DirectX. À l'origine il s'agissait principalement d'un moteur type scene graph plutôt haut niveau avec une accélération software performante, accompagnée d'une base très bas niveau basée sur les execute buffers. Aucune des deux n'a vraiment trouvé son public auprès des développeurs qui soit préféraient écrire leur propre gestion de scène adaptée à leur jeu ou héritée de leur moteur 3D software soit trouvaient les execute buffers plutôt abscons.
La version 4.0 de DirectX a été sautée pour passer directement à DirectX 5. (tout comme DirectX 2 avait été sauté pour aller directement à DirectX 3).
Direct3D 5.0 a apporté un "maquillage" des execute buffers tant décriés, sous forme de commandes de tracé de primitives (drawprimitive) qui semblaient plus rationnelles pour le programmeur lambda.
Direct3D 6.0 était une amélioration de Direct3D 5 avec des nouveaux concepts comme le multitexturing (qui avait d'abord fait son apparition dans OpenGL et utilisé par des jeux comme Quake 2) ou encore l'environment bumpmapping. Les formats de texture compressés inventés par S3 (S3TC) ont été intégré dans Direct3D et adoptés par tous les vendeurs de hardware.
Dans la version 7.0 de Direct3D, le format de texture .dds a été introduit. La version est également la première version de Direct3D a supporter le hardware transformed and lighting des nouvelles Geforce 256. (La notion de accelerated transform and lighting existait depuis longtemps dans l'espace des workstations et le monde OpenGL pro). D'autres notions ont fait leur apparition comme le cubemapping (permettant de simuler les reflexions d'un environnement sphérique).
Direct3D a longtemps été considéré comme difficile à utiliser, mais à partir de la version 8.0 de DirectX, beaucoup de problèmes d'utilisation ont été résolus et il est rapidement devenu la plateforme de choix pour le développement de nouveaux jeux sous Windows (OpenGL conservant son monopole sur les autres plateformes). Direct3D 8 contenait beaucoup de fonctionnalité très puissantes pour l'affichage 3D, comme les vertex shaders, les pixel shaders. Il a également servi de base de programmation sur la console XBox de Microsoft, qui incluait la première puce graphique à implémenter des pixel et vertex shaders (la Geforce 3).
À la sortie de la version 9.0 de DirectX, Direct3D a été intégré dans un composant logiciel appelé Direct Graphics. Direct Graphics était supposé être une combinaison de DirectDraw et Direct3D, mais n'était en réalité que Direct3D avec quelques fonctionnalités de DirectDraw en plus. La plupart des utilisateurs se réfèrent toujours à Direct Graphics en l'appelant Direct3D. Ce nom a été abandonné quelque temps après son introduction par Microsoft.
La version 9.0 de Direct3D a ajouté une nouvelle version du High Level Shader Language, avec le support du High dynamic range lighting grâce à une précision des shaders accrue et des formats de texture à virgule flottante. Il a introduit également la possibilité d'utiliser plusieurs surfaces de rendu simultanées (MRT), et l'indexation des sommets (index buffers).
La version 10 représente une importante fracture avec les anciens modèles, abandonnant l'ancien modèle de compatibilité, reposant principalement sur la programmabilité et apportant un lot important de nouvelles fonctionnalités comme les geometry shaders et un meilleur instancing (Pour une liste résumée des nouvelles features voir cette page : Direct3D 10 du changement en perspective ou voir aussi cette page de Hardware.fr ou mieux encore chez Présence-pc.com). Cette version de Direct3D n'est disponible et compatible qu'avec Windows Vista.
Une version 11 a été annoncée pour 2009.