MetalKit: Primeiros passos com a estrutura gráfica da Apple
MetalKit é uma estrutura de alto nível que facilita o domínio do Metal. Veja como começar a usar a estrutura 3D da Apple.
Metal é o pipeline de jogos e gráficos 3D da Apple para renderizar objetos 3D em dispositivos Apple. Projetado para substituir OpenGL e outras estruturas 3D, o Metal tem a vantagem de ser otimizado para hardware Apple para atingir desempenho máximo.
A Apple fornece renderização 3D suave em dispositivos Apple em níveis de desempenho que não são possíveis com outras estruturas 3D.
Você provavelmente já viu um exemplo de renderização de Metal em um dispositivo iOS ou macOS se tiver assinado e executado o aplicativo de jogo Arcade da Apple. A breve animação de introdução no Arcade é renderizada com Metal:
Em 2015, na WWDC, a Apple apresentou outra estrutura de nível superior para Metal, chamada MetalKit. Esta estrutura facilita o uso do Metal, fornecendo algumas funções de nível superior que simplificam o desenvolvimento de aplicativos 3D.
Especificamente, o MetalKit fornece APIs Metal adicionais nas seguintes áreas:
Usando o MetalKit, o carregamento de ativos e texturas é mais fácil usando a classe MTKTextureLoader. Esta classe fornece uma maneira fácil de carregar ativos e texturas, bem como definir opções de textura.
Essas opções incluem uso e carregamento de mipmap, modos de cache e armazenamento, transformação de coordenadas de textura, uso de textura de cubo e opções de cores RGB.
Um mipmap (ou mapa MIP) é apenas uma imagem de múltiplas camadas, com cada camada tendo uma resolução progressivamente mais baixa do que a camada anterior. Mipmaps são usados para acelerar a renderização de imagens e remover artefatos de aliasing, como padrões Moiré.
Um padrão moiré é uma faixa perturbadora ou um padrão de artefato colorido que às vezes aparece em computação gráfica consistindo em linhas ou padrões de pixels regulares, como grades de pixels alternadas:
A documentação completa do MTKTextureLoader está disponível no site do desenvolvedor da Apple na documentação da estrutura Metal em Documentation/MetalKit/MTKTextureLoader.
Model I/O é a estrutura de desenvolvedor da Apple para gerenciamento de ativos 3D e 2D. A integração do Model I/O do MetalKit inclui APIs para carregar rapidamente texturas em buffers Metal e usar dados de malha usando contêineres.
Atualmente, existem cerca de meia dúzia de classes relacionadas ao Model I/O no MetalKit, principalmente lidando com malhas. (Chegaremos às aulas e à programação orientada a objetos em um minuto).
A maioria dos aplicativos iOS e macOS usam visualizações – classes padrão que apresentam informações visuais e elementos de IU na tela. Diferentes subclasses de visualização fornecem diferentes tipos de visualizações.
Por exemplo, no iOS, UIView é a classe base de visualização, mas UIButton é uma classe de visualização de botão derivada de UIView. Ao usar classes de visualização orientadas a objetos no iOS ou macOS, você pode criar funcionalidades adicionais que dependem de funcionalidades padrão já definidas pelas classes Apple.
Isso é conhecido como herança de objeto. Pense em um objeto em um aplicativo como um pacote de código que encapsula o código e os dados nos quais o código opera. Ao agrupar ambos em objetos, o código pode ser facilmente reutilizado e reaproveitado por objetos adicionais.
Em particular, no MetalKit, é fornecida uma nova classe - MTKView - que permite aos desenvolvedores criar visualizações Metal completas em aplicativos. Por ter uma classe de visualização Metal dedicada, a visualização pode ser desenhada e gerenciada de maneira ideal pelo Metal sem qualquer código adicional.
A documentação da Apple para MTKView está no site do desenvolvedor em Documentation/MetalKit/MTKView. O MTKView também requer que você primeiro defina um MTLDevice em uma de suas propriedades para informar em qual dispositivo e tela renderizar objetos Metal.
MTKView também fornece um MTLRenderPassDescriptor quando solicitado, no qual você pode renderizar suas texturas. Confira a seção Documentação/Metal/Render Passes do site do desenvolvedor da Apple.
Na Programação Orientada a Objetos (OOP), os objetos são definidos por classes. Uma classe é uma definição em um arquivo de código-fonte que define o que um objeto contém e, em Swift, a implementação real de um objeto.
Uma classe define métodos (funções) que podem receber mensagens enviadas a eles por outros objetos para executar alguma função. Cada método contém código para realizar algum trabalho.