Biblioteca de renderização C++ multiplataforma que abstrai Direct3D, Metal, OpenGL, Vulkan e WebGL para você usar com seu próprio engine.
sebbbi/NoGraphicsAPI
Biblioteca gráfica minimalista em C++20 para Metal 4 e Vulkan 1.4, que substitui buffers e descriptor sets por ponteiros de GPU e heaps de descritores.
- Estrelas
- 1,699
- Forks
- 60
- Issues abertas
- 6
- Último commit
- há 7 horas
O que é?
NoGraphicsAPI é uma biblioteca gráfica de baixo nível em C++20 que implementa as ideias da proposta "No Graphics API", de Sebastian Aaltonen. Em vez de criar objetos de buffer, layouts de vértices e descriptor sets, as aplicações alocam memória de GPU em heaps, passam ponteiros de GPU de 64 bits para os shaders e referenciam texturas e samplers por índices em heaps de descritores gerenciados pela aplicação.
Cada draw ou dispatch recebe um único ponteiro de GPU para uma estrutura raiz compartilhada entre C++ e os shaders Slang. A estrutura pode conter ponteiros para dados de vértices, materiais e constantes, além de índices de texturas; assim, os vertex shaders buscam seus próprios vértices e não é preciso manter layouts de pipeline ou de bindings. As barreiras descrevem o trabalho produtor e consumidor, em vez de listas de transições de recursos, e a aplicação continua responsável pela alocação, pelo ciclo de vida e pela sincronização.
A biblioteca oferece suporte ao Metal 4 em dispositivos Apple silicon com macOS, iOS ou iPadOS 26 ou posterior, e ao Vulkan 1.4 com VK_EXT_descriptor_heap e VK_EXT_mesh_shader no Windows e Linux. Windows e macOS incluem exemplos com janela, enquanto no Linux o uso é atualmente headless.
Recursos principais
- 01Aloca memória de GPU em heaps sem expor objetos de buffer; heaps mapeados fornecem endereços para CPU e GPU.
- 02Os shaders acessam dados por meio de ponteiros de GPU tipados de 64 bits, compartilhados com estruturas C++.
- 03Texturas e samplers bindless são indexados por heaps de descritores gerenciados pela aplicação.
- 04Cada draw ou dispatch usa um único ponteiro raiz de GPU, dispensando layouts de descriptor sets e de pipeline.
- 05Os shaders são escritos em Slang e compartilhados entre os backends Metal e Vulkan.
Casos de uso
- Criar um renderer personalizado que precise de controle direto sobre a memória e os bindings da GPU.
- Experimentar renderização bindless e layouts de dados dirigidos pela GPU no Metal 4 ou Vulkan 1.4.
- Estudar uma implementação concreta das ideias de "No Graphics API" em C++ e Slang.
Início rápido
- 1
Instale o Xcode 26 ou superior com o compilador Metal, o CMake e o Slang 2026.18.2 ou superior
- 2
Configure o build com examples e tests ativados
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_SYSROOT=macosx -DNOGRAPHICSAPI_BUILD_EXAMPLES=ON -DNOGRAPHICSAPI_BUILD_TESTS=ON -DNOGRAPHICSAPI_SLANGC=/path/to/slangc - 3
Faça o build do projeto
cmake --build build - 4
Execute o exemplo triangle
build/examples/triangle/example_triangle
Antes de usar
- O backend Metal requer macOS, iOS ou iPadOS 26 ou superior e uma GPU Apple da família 7 ou mais recente; Macs com Intel não são compatíveis.
- O backend Vulkan requer Vulkan 1.4, além de VK_EXT_descriptor_heap e VK_EXT_mesh_shader, extensões ausentes em muitas GPUs.
- Atualmente, o Linux oferece suporte apenas ao uso headless, sem exemplos com janela.
Em coleções
Tópicos
Perguntas frequentes
- O que é NoGraphicsAPI?
- Biblioteca gráfica minimalista em C++20 para Metal 4 e Vulkan 1.4, que substitui buffers e descriptor sets por ponteiros de GPU e heaps de descritores. NoGraphicsAPI é uma biblioteca gráfica de baixo nível em C++20 que implementa as ideias da proposta "No Graphics API", de Sebastian Aaltonen. Em vez de criar objetos de buffer, layouts de vértices e descriptor sets, as aplicações alocam memória de GPU em heaps, passam ponteiros de GPU de 64 bits para os shaders e referenciam texturas e samplers por índices em heaps de descritores gerenciados pela aplicação.
- NoGraphicsAPI é gratuito? Qual é a licença?
- NoGraphicsAPI é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
- NoGraphicsAPI ainda é mantido?
- Manutenção ativa. O último commit de NoGraphicsAPI foi em 6 de nov. de 2026.
- Para que posso usar NoGraphicsAPI?
- Criar um renderer personalizado que precise de controle direto sobre a memória e os bindings da GPU. Experimentar renderização bindless e layouts de dados dirigidos pela GPU no Metal 4 ou Vulkan 1.4. Estudar uma implementação concreta das ideias de "No Graphics API" em C++ e Slang.
- Como instalar NoGraphicsAPI?
- Instale o Xcode 26 ou superior com o compilador Metal, o CMake e o Slang 2026.18.2 ou superior Configure o build com examples e tests ativados: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_SYSROOT=macosx -DNOGRAPHICSAPI_BUILD_EXAMPLES=ON -DNOGRAPHICSAPI_BUILD_TESTS=ON -DNOGRAPHICSAPI_SLANGC=/path/to/slangc Faça o build do projeto: cmake --build build Execute o exemplo triangle: build/examples/triangle/example_triangle
- Onde consigo NoGraphicsAPI?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/sebbbi/NoGraphicsAPI
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Um wrapper funcional para WebGL que elimina o estado compartilhado da GPU, permitindo descrever chamadas de desenho como comandos e compilá-los em JavaScript otimizado.
Engine de renderização em tempo real com base física para Android, iOS, Linux, macOS, Windows e WebGL2, projetada para ser pequena e eficiente no Android.
Framework aberto de compilação de machine learning que permite personalizar pipelines de compilação em Python e implantar modelos em diversos alvos de hardware.
Bindings C++ header-only para a API C do Vulkan, com enums type-safe, suporte à STL, exceções e handles RAII.
Um curso passo a passo sobre renderização 3D, que ensina a criar um renderizador por software em cerca de 500 linhas de C++ puro, sem bibliotecas de terceiros.