Perché Apple ha deprecato OpenGL e OpenCL?
Non è solo Apple. Apple è solo altamente motivata e controlla la sua piattaforma abbastanza strettamente da poter andare per prima.
Tecnicamente, Microsoft ha rifiutato di riconoscere l'esistenza di OpenGL da quando ha lanciato DirectX. È solo che non possono impedirvi di installarlo da soli, o che un produttore di GPU lo installi insieme a un driver della GPU. Microsoft non supporta attivamente OpenGL su Windows dalla versione 1.3. Questa è l'unica versione che viene fornita con Windows, e l'unica versione a cui si può accedere direttamente attraverso l'SDK della piattaforma. Le versioni più recenti devono essere controllate e caricate dinamicamente.
Apple sta semplicemente adottando questo atteggiamento anche per se stessa. Hanno Metal, e vogliono che lo usiate. Quindi stanno terminando il supporto per OpenGL e presto inizieranno a fingere che non esista, proprio come Microsoft.
Ma l'altro fattore in gioco qui è che OpenGL sta morendo. È molto obsoleto e ha fatto il suo corso. L'industria è passata a un modo più nuovo di parlare all'hardware grafico. Metal e DirectX 12 usano questo nuovo stile, e i vantaggi in termini di prestazioni e flessibilità sono potenzialmente importanti. Man mano che questo nuovo stile di API prende piede, dovremo iniziare ad abbandonare le cose vecchie per trarre pieno vantaggio da quelle nuove.
Lo sanno anche gli stessi creatori di OpenGL. L'API Vulkan è dello stesso gruppo. Originariamente avevano pianificato di introdurre questo nuovo stile con OpenGL 5, ma i loro tentativi di progettarlo sono andati male, e c'era anche un sentimento crescente che l'API era così radicalmente diversa che non era più veramente OpenGL. Così, quando OpenGL 5 andò male nella progettazione, AMD offrì la propria versione proprietaria del nuovo stile API, che fu chiamata Mantle, come esempio. Alla fine, il comitato ha finito per prenderla all'ingrosso, solo rinominandola e poi aggiungendola da lì. Questo divenne noto come Vulkan. Quindi in realtà OpenGL non sta andando via, è solo che OpenGL 5 è così radicalmente diverso che ha un nuovo nome. La parte che si chiama ancora OpenGL, è morta, ufficialmente, anche secondo i suoi creatori e manutentori. Ha avuto i suoi ultimi aggiornamenti, e specialmente con l'aumento del ray tracing basato su NN e dell'hardware di post processing, non invecchierà con grazia.
Ancora Microsoft e Apple sono impegnate nelle loro cose per ora. Non riconosceranno l'esistenza di Vulkan, proprio come Microsoft non ha riconosciuto OpenGL in passato. Quindi, su Windows, userete DirectX, o potrete andare dietro le loro spalle e usare Vulkan fornito da AMD o Nvidia. Su Apple, potete usare Metal. Le piattaforme Apple non permetteranno ai driver di aggiungere cose come Vulkan, quindi è Metal o niente.
Le piattaforme open source passeranno a Vulkan. Linux e Android hanno già un buon supporto Vulkan in arrivo. Sony e Nintendo stanno entrambi impegnandosi a supportare Vulkan per le loro piattaforme. Nintendo è già lì, sullo Switch. Non riesco a trovare alcuna conferma che Sony abbia effettivamente implementato Vulkan su PS4, ma la loro dichiarazione attuale era "sulle nostre future console", quindi potrebbe essere in arrivo con PS5.
Quindi, guardando la lista delle piattaforme:
- Windows - OpenGL tecnicamente deprecato negli anni '90. Vulkan ufficialmente ignorato del tutto. Entrambi ancora disponibili, ma solo attraverso installazioni aftermarket. Il supporto ufficiale è solo DirectX.
- Xbox - Solo DirectX. OpenGL non è mai esistito.
- iOS e Mac - Metal è ora il supporto ufficiale, e OpenGL è deprecato. Sarà rimosso dall'SDK, probabilmente con un programma abbastanza aggressivo.
- Nintendo - Supporta OpenGL e Vulkan, così come il proprio kit sviluppato con Nvidia. La loro prossima piattaforma probabilmente manterrà Vulkan ma abbandonerà OpenGL.
- PlayStation - Supporta OpenGL e il proprio kit. Vulkan in arrivo probabilmente con PS5. PS6 probabilmente abbandonerà OpenGL.
- Android - Vulkan ha raggiunto la parità di funzionalità con OpenGL per Android in Vulkan 1.1. Vulkan 1.1 è un'implementazione richiesta per i dispositivi Android 10 e superiori. Quasi certamente Google darà un po' di tempo ad Android 10+ per saturare il mercato, e poi seguirà Apple nella deprecazione di OpenGL. I nuovi progetti ed esperimenti provenienti da Google sono scritti direttamente con Vulkan e non hanno supporto OpenGL. Anche il loro sistema operativo sperimentale "Fuchsia" non ha affatto OpenGL, solo Vulkan.
- Linux - farà lo stesso di Android, ma data la quantità di supporto legacy da gestire, avranno un'attesa molto più lunga.
Quindi, non è che Apple abbia deprecato OpenGL. È che, nel prossimo decennio, l'intera industria prevede di deprecare OpenGL. Apple era solo nella posizione di muoversi più velocemente, e ha scelto di muoversi in modo aggressivo, perché, beh, questa è Apple per voi.
Fidatevi di me, le uniche persone sconvolte da questo sono quelle che non programmano le GPU ma conoscono solo OpenGL come una cosa che i giochi usano, e pensano che questo sia Apple che dice "al diavolo i giocatori". Ma le persone che devono effettivamente usare queste API, la maggior parte di loro sono felici di vedere OpenGL andare. Era molto obsoleto ed era diventato un mucchio gigante di kludges e funzioni deprecate. I suoi sostituti hanno una curva di apprendimento più ripida, ma sono molto più potenti ed eleganti. Solo gli sviluppatori che si trovano nella parte bassa della curva di apprendimento sono tristi di vedere OpenGL andarsene.