Vous faites un moteur 3D. Vous voulez le meilleur des mondes multiplateformes. Soudain, vous réalisez que si vous souhaitez utiliser Direct3D sur les machines Windows et OpenGL sur OSX / Linux, vous devrez sacrifier les fonctionnalités prises en charge des deux au plus petit dénominateur commun.
Certains peuvent utiliser OpenGL sur trois systèmes d'exploitation, car il semble être le dénominateur le moins commun en soi. Tout est bon. Ensuite, vous devez porter votre backend API graphique sur le GX de Nintendo, vous devez également créer un chemin PS3 et Xbox360.
Que faire? Concevez-vous votre propre API qui est le dénominateur le moins commun en soi et écrivez-vous des implémentations backend pour chaque plate-forme ou écrivez-vous pour chaque plate-forme sa propre branche?
Si vous choisissez de concevoir votre propre API, utilisez-vous un modèle de pont ou votre propre vaudou? Où la folie s'arrête-t-elle là où vous réalisez tout et l'approche d'évier de cuisine doit s'arrêter et vous avez essentiellement un moteur séparé pour chaque plate-forme en tant que branche. Ou vous vous en tenez à tout et à l'évier de cuisine et conservez les spécificités de la plate-forme dans les spécialisations du module backend pour chaque plate-forme.