Pasvulkan
Gerador de cabeçalho Vulkan e invólucro de API em estilo OOP Vulkan para objeto Pascal (FreePascal> = 3.3.1 tronco FPC e qualquer versão recente do Delphi atual)
A própria unidade de cabeçalho de ligação de vulkan.PAS (incluindo o conversor vkxml2pas.dpr) é e permanece também compatível com a versão antiga Delphi 7, mas os Pasvulkan. Versão não tem suporte para.
Apoie -me
Apoie -me no Patreon
Sobre mim / meus detalhes de contato
- Meu site
- Meu blog
- Minha conta do Twitter
- Minha conta do Facebook
Informações importantes sobre check -out de repositório
Se você tem problemas com o comando git clone, porque o repositório é muito grande para você ou você não precisa do histórico completo do repositório, você pode tentar usar o seguinte comando:
git clone --single-branch --depth 1 --recursive https://github.com/BeRo1985/pasvulkan.git pasvulkan
ou respectivamente para a variante SSH:
git clone --single-branch --depth 1 --recursive [email protected]:BeRo1985/pasvulkan.git pasvulkan
Ou, alternativamente, você pode tentar desligar a compactação, o que também pode ajudar em alguns casos, mas consciente, é um cenário global para todos os repositórios do GIT em seu sistema:
git config --global core.compression 0
Informações importantes
Você deve primeiro compilar o gerente de projeto (ainda incompleto) do PASVULKAN usando o CompileProjectManager (*nix) ou CompileProjectManager.bat (Windows) para que você possa usar o Pasvulkan Project Manager como uma ferramenta de linha de comando chamada ProjectManager (.exe).
E você precisa da versão Delphi mais atual ou da versão mais atual do tronco SVN do compilador FreePascal (e não apenas a versão estável do compilador Freepascal), incluindo caminhos corretos em sua variável de ambiente de caminho para esses binários do compilador. E se você também deseja usar o alvo Android, o mesmo se aplica ao Android Studio, ao Java SDK, ao Android SDK e ao Android NDK, que eles devem ser instalados em seus locais padrão (como o Google prescreve ou especifica esses locais padrão, sem exceções) e deve existir corretamente nas variáveis do ambiente do sistema.
E para o alvo Android, você precisa de todas as instalações do FreePasCal Cross Compiler para todos dos alvos oficiais de CPU com suporte Android sem exceção, e são: x86_32/i386, x86_64/amd64, ARM32 e AARCH64/ARM64
Como construir e executar o projeto de exemplo
Depois de compilar o ProjectManager binário, você precisa fazer o seguinte:
| Etapa | Windows | *nix | Descrição |
|---|
| 1. | projectmanager compileassets examples | ./projectmanager compileassets examples | Ele compila os arquivos de ativo |
| 2. | projectmanager build examples | ./projectmanager build examples | Ele compila o próprio código de exemplo |
| 3. | projectmanager run examples | ./projectmanager run examples | Inicia o exemplo binário |
Como criar um novo projeto
Depois de compilar o ProjectManager binário, você precisa fazer o seguinte:
| Etapa | Windows | *nix | Descrição |
|---|
| 1. | projectmanager create [yourprojectname] | ./projectmanager create [yourprojectname] | Ele cria o novo projeto |
IMPORTANTE: Onde o nome do projeto deve ser um identificador de Pascal e Java Válido e Java e até mesmo um nome de arquivo válido ao mesmo tempo!
Para mais informações sobre o gerente do projeto
Depois de compilar o ProjectManager binário, basta executar projectmanager -h em seu shell ou console para obter uma saída detalhada de ajuda.
Características
- Cabeçalho Vulkan no estilo c-api (vulkan.pas, que é gerado por vkxml2pas.dpr)
- É sempre atualizado, pois é gerado automaticamente através do vkxml2pas.dpr
- Plataformas suportadas:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64/AARCH64)
- Linux (x86-32, x86-64, braço)
- Invólucro moletenvk (não testado)
- Estrutura Vulkan baseada em OOP (pasvulkan.framework.pas)
- Abstração da API Vulkan orientada a objetos
- Melhor gerente de memória baseado em árvore-preto-preto para o gerenciamento de memória Vulkan, para gerenciar as sublocações nos buffers alocados e para manter a contagem total de alocações ao vivo simultâneas o máximo possível e menos que o TVKPhysicalDevicelimits.MaxMemoryAllocationCount.
- Carregadores de textura com implementações de carregadores nativas do objeto de objeto, para que seja independente de carregadores de imagens externos de terceiros, mesmo independentes do VCL, LCL e FCL.
- BMP (não testado, mas deve funcionar)
- Dds
- Hdr
- KTX
- JPG / JPEG (apenas linha de base, apenas codificada por Huffman e apenas YCRCB no momento agora)
- PNG (todos os tipos, incluindo PNGs de canal de 16 bits)
- TGA
- Apresenta funções da API de captura de tela de troca
- Incluindo uma implementação mínima de escritor de PNG de Native objectPascal (incluindo um Huffman estático mínimo, apenas a implementação desviada)
- incluindo uma própria implementação do Writer JPEG Native Own ObjectPascal
- Geração opcional de textura automática automática de GPU (com a ajuda do vkcmdblitimage)
- PROPRIEDADE
- Com o suporte experimental de fontes OpenType com sabor postScript (CFF tipo 2)
- Com semi-trabalhador TrueType com sabor de openType-fontes de tomada de base Byte Code Interpreter como uma opção opcional
- Com a geração de campo de distância assinada rápida de alta qualidade, de alta qualidade, na geração de campo assinado (com base nas idéias de implementação da geração prática de campo analítico 2D analítico e com PASMP)
- Um recurso de texturas de vetores de fonte também está planejado para o futuro, para um próprio campo de campo de campo de distância de distribuição + vetor de texto híbrido, dependentemente do tamanho da fonte e assim por diante, onde os canais RGB de um túmulo de todos os fútex de um tipo de inspeção de todos os tipos de todos os tipos de todos os tipos de todos os tipos de todos os tipos de todos os tipos de todos os gestos de todos os gestos de todos os gestos de todos os que são de 24 bits-bit-bit-bit-bit-link bezier), e o canal alfa de um Texel seria apenas o campo de distância assinado de 8 bits.
- Classe em lote sprite
- Atlas Sprite
- Com as construções automáticas de atlas de sprite rápido e rápido com corte/corte automático opcionais, para que você não precise de ferramentas externas de geração de atlas de sprite, mas, no entanto, a saída da ferramenta TexturePacker também é suportada por Pasvulkan
- e mais úteis utilizadores e coisas para programação de vulkan
- Plataformas suportadas:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64/AARCH64)
- Linux (x86-32, x86-64, braço)
- Invólucro moletenvk (não testado)
- Estrutura de aplicativos otimizada em vulkan no estilo OOP (pasvulkan.application.pas pasvulkan.android.pas pasvulkan.sdl2.pas pasvulkan.starticlinking.pas)
- O design geral dessa estrutura de aplicativos otimizada em Vulkan é a mistura entre os conceitos de design VCL/LCL/FCL e LibGDX (e algumas de minhas próprias idéias de design, é claro).
- Ele usa SDL 2.x como API da camada de abstração OS-API
- Somente uma janela, por isso é amigável ao máximo, até onde é possível.
- Para aplicativos de várias janelas, você deve fazer suas próprias coisas (por exemplo, estrutura própria ou usando o VCL/LCL etc.), porque está fora do foco dos alvos dessa estrutura de aplicativos otimizada por vulkan
- Recuperação automática para:
- Vk_error_surface_lost_khr
- Vk_error_out_of_date_khr
- Vk_suboptimal_khr
- Mas não, por exemplo, VK_ERROR_DEVICE_LOST, VK_ERROR_OFT_OF_DEVICE_MEMORY ou VK_ERROR_OF_OF_HOST_MEMORY, porque são situações críticas, que você deve lidar com si mesmo.
- Criação e recreação da cadeia de troca automática
- Re-abstração da abstração SDL2, para o possível caso futuro, quando essa estrutura de aplicativos otimizada em Vulkan não será baseada no SDL 2.0 para possíveis plataformas de destino mais seguintes, o Nintendo Switch como exemplo ou quando essa estrutura de aplicativos otimizada em Vulkan não será mais SDL 2.0 baseada em algumas plataformas de alvo.
- Plataformas suportadas:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64/AARCH64)
- Linux (x86-32, x86-64, braço)
- Mas ainda não há Moltenvk (já que o SDL 2.x ainda não tem suporte para isso, até agora eu sei)
Licença (Zlib)
Copyright (C) 2016-2017, Benjamin Rosseaux ([email protected])
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgement in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Diretrizes gerais para colaboradores de código
- Certifique -se de ter permissão legalmente para fazer uma contribuição sob a licença do ZLIB.
- O cabeçalho da licença ZLIB vai na parte superior de cada arquivo de origem, com o Aviso de direitos autorais apropriado.
- Este invólucro de Pasvulkan pode ser usado apenas com o cabeçalho Pascal, dono de Pasvulkan.
- Após uma solicitação de tração, verifique o status da sua solicitação de tração em https://github.com/bero1985/pasvulkan
- Código de gravação que é compatível com Delphi> = 2009 e FreePascal> = 3.1.1
- Não use bibliotecas/unidades/unidades somente FreePasCal ou Lázaro, mas, se necessário, torne-o fora do IFDEF.
- Não é possível usar bibliotecas/unidades de terceiros, mas, se necessário, torná-lo fora do IFDEF-EBLE.
- Tente usar const sempre que possível.
- Certifique -se de comentar o Writeln, usado durante a depuração.
- Verifique se o código compila em plataformas de 32 e 64 bits (x86-32, x86-64, ARM, ARM64, etc.).
- Verifique se o código é executado em todas as plataformas com suporte Vulkan
Mostrar vídeos
Para vídeos mais recentes da mostra, veja a lista de reprodução do YouTube
Pasvulkan no Android 7.0 em um comprimido Nvidia Shield K1
Pasvulkan em um Nvidia GeForce GTX 970 sob o Windows 10 Pro