Capisco che i linguaggi di programmazione possono essere eseguiti in una VM (Java, ecc.) su ogni sistema operativo che supporta la macchina virtuale in modo nativo o possono essere compilati in codice macchina (C, ecc.) per ogni piattaforma.
Ciò che non capisco è perché i programmi (che si occupano di API grafiche come OpenGL, DirectX12 o Mantle o non ne gestiscono affatto) non sono tutti multipiattaforma se è facile come la compilazione incrociata?
Che cosa impedisce a programmi, giochi, API (ad esempio OpenGL) di essere compatibili su tutte le piattaforme (eccetto che forse gli sviluppatori lo volevano su un'unica piattaforma)?
Con la nuova API grafica, Vulkan, che uscirà presto, sarebbe teoricamente possibile se si utilizzasse un toolkit come wxWidgets, per la GUI nativa, insieme a un'API come Vulkan per creare programmi che girano completamente su piattaforma fintanto che il SO ha un driver Vulkan? Qualsiasi altro punto di vista su qualcosa che mi manca sarebbe apprezzato.