Ca n'a rien a voir avec le software...
Je code actuellement un moteur3D en OpenGL, DirectX, je suis donc bien placé pour en parler. Si tu fais les choses proprement, la transition DirectX/GL ou inversement n'est pas si compliqué. Ormis l'affichage, tous les algorithmes sont les même que ce soit pour le tri des faces, les collisions ou encore le son, etc ...
Il te suffit de faire des algos suffisament "aware" pour que tu n'es pas à te compliquer la tache trop longtemps! En gros, tu n'auras a recoder que les algos utilisant les routines d'affichages, par exemple notre fidèle glVertex3f(x,y,z)
Malheureusement avec l'apparition des extensions en tout genre, c'est plus compliqué pour gérer les effets visuels "moderns" comme le multitexturing, ou le bimp mapping pour ne citer qu'eux! Et dans ce cas, tu auras plus de boulot pour adapter ca sur les 2 ou 3 API que tu auras choisis!
Voila j'espère que j'aurais répondu à tes questions !
---------------
"Software is like sex it's better when it's free !!!! "