MetalKit: iniziare con il framework grafico di Apple
MetalKit è un framework di alto livello che rende più facile prendere confidenza con Metal. Ecco come iniziare a utilizzare il framework 3D di Apple.
Metal è la pipeline di giochi e grafica 3D di Apple per il rendering di oggetti 3D sui dispositivi Apple. Progettato per sostituire OpenGL e altri framework 3D Metal ha il vantaggio di essere ottimizzato per l'hardware Apple per ottenere le massime prestazioni.
Apple fornisce un rendering 3D fluido sui dispositivi Apple a livelli di prestazioni non possibili con altri framework 3D.
Probabilmente hai visto un esempio di rendering Metal su un dispositivo iOS o macOS se sei abbonato ed esegui l'app di gioco Arcade di Apple. La breve animazione introduttiva in Arcade è renderizzata con Metal:
Nel 2015 al WWDC, Apple ha introdotto un altro framework di livello superiore per Metal chiamato MetalKit. Questo framework semplifica l'utilizzo di Metal fornendo alcune funzioni di livello superiore che semplificano lo sviluppo di app 3D.
Nello specifico, MetalKit fornisce API Metal aggiuntive nelle seguenti aree:
Utilizzando MetalKit, il caricamento di risorse e texture è più semplice utilizzando la classe MTKTextureLoader. Questa classe fornisce un modo semplice per caricare risorse e trame, nonché per impostare le opzioni delle trame.
Queste opzioni includono l'utilizzo e il caricamento della mipmap, le modalità cache e di archiviazione, la trasformazione delle coordinate della trama, l'utilizzo della trama del cubo e le opzioni di colore RGB.
Una mipmap (o mappa MIP) è semplicemente un'immagine multistrato in cui ogni strato ha una risoluzione progressivamente inferiore rispetto allo strato precedente. Le Mipmap vengono utilizzate per velocizzare il rendering delle immagini e rimuovere gli artefatti di aliasing come i modelli Moiré.
Un motivo moiré è una banda che distrae o un motivo di artefatto di colore che a volte appare nella grafica computerizzata costituito da linee o motivi di pixel regolari come griglie di pixel alternati:
La documentazione completa per MTKTextureLoader è disponibile sul sito Web degli sviluppatori Apple nella documentazione del framework Metal in Documentation/MetalKit/MTKTextureLoader.
Model I/O è il framework di sviluppo di Apple per la gestione di risorse 3D e 2D. L'integrazione Model I/O di MetalKit include API per caricare rapidamente le texture nei buffer Metal e utilizzare i dati mesh utilizzando i contenitori.
Attualmente in MetalKit sono presenti circa una mezza dozzina di classi relative all'I/O del modello, che si occupano principalmente di mesh. (Tra un minuto parleremo delle lezioni e della programmazione orientata agli oggetti).
La maggior parte delle app iOS e macOS utilizzano le visualizzazioni, classi standard che presentano informazioni visive ed elementi dell'interfaccia utente sullo schermo. Diverse sottoclassi di viste forniscono diversi tipi di viste.
Ad esempio, in iOS UIView è la classe base della vista, ma UIButton è una classe della vista pulsante derivata da UIView. Utilizzando le classi di visualizzazione orientate agli oggetti in iOS o macOS, puoi creare funzionalità aggiuntive che si basano su funzionalità standard già definite dalle classi Apple.
Questo è noto come ereditarietà degli oggetti. Pensa a un oggetto in un'app come a un pacchetto di codice che incapsula sia il codice che i dati su cui opera il codice. Raggruppando entrambi in oggetti, il codice può essere facilmente riutilizzato e riproposto da oggetti aggiuntivi.
In particolare in MetalKit viene fornita una nuova classe, MTKView, che consente agli sviluppatori di creare visualizzazioni Metal complete nelle app. Avendo una classe di vista Metal dedicata, la vista può essere disegnata e gestita in modo ottimale da Metal senza alcun codice aggiuntivo.
La documentazione di Apple per MTKView si trova sul sito Web dello sviluppatore all'indirizzo Documentation/MetalKit/MTKView. MTKView richiede inoltre di impostare prima un MTLDevice in una delle sue proprietà per indicargli in quale dispositivo e schermo eseguire il rendering degli oggetti Metal.
MTKView fornisce anche un MTLRenderPassDescriptor quando ti viene chiesto in quale puoi eseguire il rendering delle tue texture. Controlla la sezione Documentazione/Metallo/Render Pass del sito degli sviluppatori Apple.
Nella programmazione orientata agli oggetti (OOP), gli oggetti sono definiti da classi. Una classe è una definizione in un file di codice sorgente che definisce cosa contiene un oggetto e, in Swift, l'effettiva implementazione di un oggetto.
Una classe definisce metodi (funzioni) che possono ricevere messaggi inviati loro da altri oggetti per eseguire alcune funzioni. Ogni metodo contiene codice per eseguire alcune operazioni.