TECNOLOGIA
O que é API gráfica e o que isso influencia no desempenho dos seus jogos?
Já houve um tempo em que programadores faziam seus códigos interagir diretamente com o hardware, dando comandos para o processador, placa de vídeo e outras peças.
Com o passar dos anos, as tecnologias foram evoluindo e ganhando cada vez mais recursos, chegando a um ponto em que se tornou impossível gerenciar manualmente cada um deles.
É aí que entraram em cena as APIs, figuras desconhecidas pela maioria, mas que fazem o trabalho pesado em nossos dispositivos, conectando componentes de hardware, códigos, programas e até mesmo outros aparelhos.
Hoje falaremos um pouco sobre o que são essas interfaces, como elas facilitam a vida dos programadores e principalmente qual o impacto que as APIs gráficas têm nos nossos jogos e aplicativos.
Conhecendo as APIs
O termo API significa Application Programming Interface, ou Interface de Programação de Aplicativos, em português. As APIs são um conjunto de ferramentas utilizadas para construir os aplicativos que utilizamos e também para fazer a comunicação entre suas partes e diferentes componentes.
Uma ótima forma de visualizar o que as APIs fazem é imaginá-las como o garçom de um restaurante. Elas ouvem o que o cliente deseja, anotam o pedido e o levam até a cozinha, para que seja preparado. Assim que o pedido fica pronto, o garçom retorna com o prato e o entrega ao cliente.
A API recebe o pedido do S.O ou APP e leva até o seu destino.
Nos nossos dispositivos, a API opera de forma bem similar: ela recebe algum pedido do sistema operacional ou aplicativo e o leva até o destino, fazendo a tradução da mensagem para uma linguagem que o receptor compreenda.
Depois de trabalhada, a informação é novamente entregue à API, que fica encarregada de retornar até a origem e traduzi-la para a forma adequada.
São as APIs que permitem a comunicação entre diferentes aplicativos, sistemas operacionais, peças de hardware e até mesmo entre aparelhos distintos.
Elas estão presentes em todas as formas de tecnologia moderna, seja em uma simples compra online a partir do seu smartphone ou em um jogo que roda no seu navegador do PC.
Por fornecerem os recursos básicos aos desenvolvedores, as APIs muitas vezes são comparadas às peças de LEGO, utilizadas para montar bloco a bloco um programa. A criatividade de cada programador, somada ao poder dessas ferramentas, pode resultar em algo bem maior do que a simples soma das partes.
O que é uma API gráfica?
As APIs gráficas são uma variante dedicada especificamente à área de imagem e processamento gráfico 3D, fazendo todo o trabalho de comunicação entre os nossos jogos, drivers e a placa de vídeo em si. É por causa delas que jogadores do mundo inteiro podem optar por marcas como NVIDIA, AMD ou Intel, vendo seus jogos renderizados corretamente.
As APIs gráficas ficam em uma camada entre as engines (os motores gráficos) dos jogos e o driver. O driver é o responsável pela tradução final, levando ao hardware instruções precisas do que precisa ser feito e entregue de volta aos aplicativos.
Gostaria de entender melhor para que serve o driver? Você encontra maiores maiores aqui.
O dilema do desempenho vs. simplicidade
Sendo um conjunto de instruções e recursos, as APIs gráficas buscam facilitar o trabalho dos desenvolvedores, disponibilizando um amplo conjunto de ferramentas prontas com as quais eles podem montar seus jogos, sem ter que recorrer diretamente a instruções de baixo nível.
Surge um problema: quanto mais repleta de instruções e códigos uma API se torna, mais ela pesa no sistema, que precisa dedicar boa parte do seu tempo para processar os dados e repassá-los adiante.
Quanto maior a absorção de códigos mais a API pesa no sistema.
É aí que entram em cena DirectX e Vulkan, duas das principais APIs gráficas da atualidade, endossadas pela Microsoft e Khronos (com apoio da AMD), respectivamente. Essas duas APIs dão abertura para que os programadores elaborem códigos mais próximos do hardware quando necessário, o que resulta em maior desempenho.
A proximidade com o hardware faz com que essas APIs sejam chamadas de low level, se aproximando da camada física. Vamos conhecer um pouco mais sobre elas?
DirectX, o mais utilizado do mundo
Anunciada lá em 2014, a versão 12 do DirectX é uma das mais poderosas APIs gráficas do mercado, contando com uma vasta biblioteca de recursos para composição de imagens em 3D.
O padrão contou com o apoio de marcas como a NVIDIA, facilitando muito a programação dos jogos e garantindo maior desempenho pela redução das Draw Calls, comandos disparados pelo seu processador, exigindo que a sua placa de vídeo renderize alguma cena.
Outro destaque é a simplificação do uso de processadores multi core. A otimização com relação ao número de núcleos acessados na CPU é crucial para aumentar o desempenho dos jogos, afinal, de nada adianta ter uma GPU extremamente capaz, como uma GeForce RTX 2080, se o processador não for capaz de alimentá-la adequadamente.
É o que chamamos de gargalo (bottleneck), um termo bem conhecido por quem utiliza o PC para jogos.
Mais recentemente, a Microsoft adicionou a extensão DXR, voltada ao Ray Tracing. Trata-se de uma das mais avançadas técnicas de iluminação da atualidade, agora utilizada em jogos por conta da série de placas de vídeo RTX 2060, 2070 e 2080 da NVIDIA.
Você pode ler mais sobre o ray tracing aqui.
Vulkan e seus segredos para altíssimo desempenho
O Vulkan é uma das mais recentes APIs gráficas. Inicialmente desenvolvido pela AMD, o padrão aberto foi cedido ao grupo Khronos, que continuou o seu desenvolvimento. Ele permite a elaboração de códigos low level, o que garante uma grande vantagem em termos de desempenho.
Outra diferença é que ele está disponível para diversas plataformas, não apenas PC. Jogos como Doom possuem versões otimizadas com esta API, resultando em desempenho suave e alto FPS mesmo em placas relativamente mais modestas.
*****
Fonte(s): MuleSoft, Wikipedia, Nordic APIs e Techquickie