APIs gráficas - SantiagoFerrer/computa-o-visual GitHub Wiki
Duas APIs gráficas que existem no mercado são a OpenGL e a Vulkan.
OpenGL: É uma API gráfica multiplataforma e de código aberto. É utilizada pela Khronos Group e foi lançada em 1992, a mesma é documentada no site oficial da Khronos Group, onde são disponibilizados guias e especificações detalhadas. A pipeline de renderização da OpenGL consiste em seis estágios principais:
vertex specification; vertex shader; tessellation control shader; tessellation evaluation shader; geometry shader; fragment shader e rasterization.
A linguagem de shading suportada pela OpenGL é a GLSL (OpenGL Shading Language), que é uma linguagem de alto nível baseada em C. Ela é utilizada para escrever shaders para cada um dos estágios da pipeline de renderização da OpenGL.
Exemplo de código com OpenGL:
Um exemplo de aplicação que usa OpenGL é o jogo Minecraft, que utiliza a OpenGL para renderizar os gráficos 3D.
Vulkan: É uma API gráfica de baixo nível, também é utilizada pela Khronos Group e foi lançada em 2016 e é uma evolução da OpenGL. Também é documentada no site oficial da Khronos Group, com guias e especificações detalhadas assim como a OpenGL. A pipeline de renderização da Vulkan consiste em vários estágios configuráveis pelo desenvolvedor, permitindo uma grande flexibilidade e controle sobre o processo de renderização.
A linguagem de shading suportada pela Vulkan é a SPIR-V (Standard Portable Intermediate Representation Virtual), que é uma linguagem de baixo nível que pode ser utilizada para escrever shaders para a pipeline de renderização da Vulkan.
Exemplo de código com Vulkan:
Um exemplo de aplicação que utiliza a API gráfica Vulkan é o jogo Doom Eternal, desenvolvido pela id Software e lançado em 2020.
Em resumo, a OpenGL é uma API gráfica mais antiga e de nível mais alto, que suporta a linguagem de shading GLSL e oferece uma pipeline de renderização mais padronizada. Já a Vulkan é uma API mais moderna e de baixo nível, que suporta a linguagem de shading SPIR-V e permite uma maior flexibilidade e controle sobre a pipeline de renderização. Ambas as APIs têm suas vantagens e desvantagens e são adequadas para diferentes tipos de projetos gráficos.
Referências:
1 - https://registry.khronos.org/vulkan/ 2 - https://www.khronos.org/opengl/ 3 - https://developer.android.google.cn/ndk/guides/graphics/getting-started?hl=pt-br 4 - https://www.inf.pucrs.br/~manssour/CG/p-OpenGL/index.html