Wir entwickeln bei uns seit Jahren multi-platform für Windows, Windows CE und Linux und seit 2 Jahren auch für Android, Mac OS X und iPhone OS und als Grafik-API arbeiten wir sowohl mit trockenem GDI, OpenGL als auch Direct3D und ich sags mal so:
Wenn du deinen Engine/dein Framework, nenns wie du magst, von Anfang an darauf vorbereitest und so konzipierst, dass a) das Programm weit genug von der API und Plattform "entfernt" ist und b) Das Programm nichts zwangsläufig vorraussetzt, was ggf. auf einer der Zielplattformen gar nicht so möglich ist, dann bleibt das alles im annehmenbaren Bereich.
Rechne mal 3-4 Wochen, um eine "normale" Direct3D-Schnittstelle mit 5-6 Standard-Shadern à la Bump & Co. auf OpenGL umzusetzen (vorrausgesetzt natürlich Grunderfahrungen mit beiden), für Windows nach Linux kannst du 2 Wochen veranschlagen, für Linux zum Mac oder iPhone (nimmt sich nichts) dann nochmal zwei weitere um Cocoa reinzubiegen.. unter der Haube sind die ja zum Glück sehr ähnlich (Unix) ;-).
Wenn du natürlich schon ein fertiges Produkt hast mit 20,000 Zeilen Shader-Code und am besten noch Windows und Direct3D-Code völlig in den Quelltext vom Hauptprogramm verankert, dann hast du natürlich geloosed... aber das macht man als Entwickler in seinem Leben eigentlich auch nur einmal, außer man steht auf Schmerz ;-).
LG
Alyx