Gerador de API Vulkan C++
Gera uma API C++ a partir da especificação Vulkan. Comparação com vulkan-hpp:
- vkpp criado com simplicidade e tempo de compilação em mente, mais leve
- NÃO produz um cabeçalho LOC monolítico de quase 30K (atualização: vulkan-hpp chega a> 110K LOC agora e continua a crescer)
- divide o uso em vários cabeçalhos, o que permite, por exemplo, usar apenas as declarações futuras (menos de 1K LOC) em seus cabeçalhos públicos
- menos recursos
- não modela tudo orientado a objetos
- nenhuma função automática 'to_string' para enums
- provavelmente tratamento de erros menos sofisticado
- Oferece apenas vantagens reais sobre a API C simples
- colocando tudo em um namespace
- enums typesafe
- verificação automática de erros críticos
- construtores de estrutura (configurações sType, inicialização padrão)
- 'vetorização' de funções
-
vk::queueSubmit(queue, {info1, info2, info3}, fence)
é válido
- Possui um mecanismo de despacho dinâmico diferente (opcional). vkpp permite despachar dinamicamente implicitamente se desejar (pode ser útil para Android)
- Desvantagem: não é fornecido com o pacote vulkan sdk/vulkan
- isso significa que você pode ter problemas com compatibilidade de versões usando esta API (basta usar a tag git correta que corresponda à versão vulkan.h instalada para seus projetos)
Se você precisar de um dos recursos não suportados mencionados acima, verifique vulkan-hpp (ou se você achar que eles são razoáveis aqui, descreva-os com o raciocínio em um problema). Emitir relatórios, contribuições e sugestões apreciadas!
Versionamento
Você pode alterar a versão do Vulkan para a qual os cabeçalhos são gerados, substituindo vk.xml
pela versão que deseja usar. Observe que você deve configurar o meson com -Dregen=true
(ou -Dvkpp:regen=true
se estiver usando vkpp como subprojeto) para regenerar os cabeçalhos. O gerador atual também não suporta todas as versões, uma vez que o formato de especificação xml do Vulkan apresenta algumas alterações significativas (não compatíveis com versões anteriores) ao longo do tempo. Para algumas versões do Vulkan, existem commits git específicos que você pode simplesmente usar.