pasvulkan
Générateur d'en-tête Vulkan et wrapper API de style Vulkan OOP pour Object Pascal (Freepascal> = 3.3.1 Trunk FPC et toute version récente de Delphi)
L'unité d'en-tête de liaison Vulkan.PAS elle-même (y compris le convertisseur vkxml2pas.dpr) est et reste également compatible avec l'ancienne version de Delphi 7, mais le Pasvulkan. La version du compilateur n'a aucune prise en charge.
Soutenez-moi
Soutenez-moi à Patreon
À propos de moi / mes coordonnées
- Mon site Web
- Mon blog
- Mon compte Twitter
- Mon compte Facebook
Informations de paiement des référentiels importants
Si vous avez des problèmes avec la commande git clone, car le référentiel est trop grand pour vous ou que vous n'avez pas besoin de l'historique complet du référentiel, vous pouvez essayer d'utiliser la commande suivante:
git clone --single-branch --depth 1 --recursive https://github.com/BeRo1985/pasvulkan.git pasvulkan
ou respectivement pour la variante SSH:
git clone --single-branch --depth 1 --recursive [email protected]:BeRo1985/pasvulkan.git pasvulkan
Ou alternativement, vous pouvez essayer de désactiver la compression, ce qui peut également aider dans certains cas, mais conscient, c'est un paramètre global pour tous les référentiels Git sur votre système:
git config --global core.compression 0
Informations importantes
Vous devez d'abord compiler le gestionnaire de projet Pasvulkan (mais incomplet) à l'aide de CompileProjectManager (* Nix) ou CompileProjectManager.Bat (Windows) afin que vous puissiez ensuite utiliser le chef de projet Pasvulkan en tant qu'outil de ligne de commande nommé ProjectManager (.exe).
Et vous avez besoin de la version Delphi la plus récente ou de la version SVN le plus récente du compilateur Freepascal (et pas seulement de la version stable du compilateur Freepascal), y compris les chemins corrects dans votre variable d'environnement de chemin à ces binaires de compilateur. Et si vous souhaitez également utiliser la cible Android, il en va de même pour Android Studio, le SDK Java, le SDK Android et le NDK Android, que ceux-ci doivent être installés à leurs emplacements par défaut (comme Google prescrit ou spécifie ces emplacements par défaut, sans exception) et doit exister correctement dans les variables d'environnement du système.
Et pour l'objectif Android, vous avez besoin de toutes les installations de compilateur croisé Freepascal pour tous à partir des cibles du processeur à prise en charge officielle d'Android sans aucune exception, et ce sont: x86_32 / i386, x86_64 / amd64, arm32 et aarch64 / arm64
Comment construire et exécuter l'exemple de projet
Après avoir compilé le projet Binary, vous devez faire ce qui suit:
| Étape | Fenêtre | *rien | Description |
|---|
| 1 et 1 | projectmanager compileassets examples | ./projectmanager compileassets examples | Il compile les fichiers d'actifs |
| 2 | projectmanager build examples | ./projectmanager build examples | Il compile l'exemple de code lui-même |
| 3 et 3 | projectmanager run examples | ./projectmanager run examples | Ça commence l'exemple binaire |
Comment créer un nouveau projet
Après avoir compilé le projet Binary, vous devez faire ce qui suit:
| Étape | Fenêtre | *rien | Description |
|---|
| 1 et 1 | projectmanager create [yourprojectname] | ./projectmanager create [yourprojectname] | Il crée le nouveau projet |
IMPORTANT: Lorsque le nom du projet doit être un identifiant de Pascal et Java en minuscules valides et même un nom de fichier valide en même temps!
Pour plus d'informations sur le chef de projet
Après avoir compilé le projet Binary, exécutez simplement projectmanager -h dans votre shell ou console pour une sortie d'aide détaillée.
Caractéristiques
- En-tête Vulkan de style C-API (Vulkan.pas généré par vkxml2pas.dpr)
- C'est toujours à jour, car il est généré automatiquement via le vkxml2pas.dpr
- Plateformes prises en charge:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64 / AARCH64)
- Linux (x86-32, x86-64, bras)
- Moltenvk Wrapper (non testé)
- Vulkan Framework (pasvulkan.framework.pas)
- Abstraction de l'API Vulkan orientée vers l'objet
- Mémorat basé sur les arbres rouges du meilleur ajustement pour la gestion de la mémoire Vulkan, pour gérer les sous-allocations dans les tampons alloués et pour conserver le nombre total d'allocations en direct simultanées aussi faibles que possible et moins que tvkphysicaldevicelimits.MaxMemoryallocationCount.
- Chargeurs de texture avec propres implémentations de chargeur natif ObjectPascal, il est donc indépendant des chargeurs d'images tiers externes, même indépendants du VCL, LCL et FCL.
- BMP (non testé, mais ça devrait fonctionner)
- Dds
- HDR
- Ktx
- JPG / JPEG (seulement la ligne de base, seulement codé par Huffman et uniquement YCRCB en ce moment)
- PNG (tous types, y compris les PNG de canaux 16 bits)
- TGA
- Caractéristiques des fonctions API de capture d'écran de la chaîne d'échange
- y compris une mise en œuvre de l'écrivain minimal de PNG d'objetpascal-natif (y compris un propre homme statique minimal ne dégonfle que la mise en œuvre)
- y compris une mise en œuvre de l'écrivain JPEG de propre objetpascal natif
- Génération MIPMAP de texture GPU automatique en option (avec l'aide de VKCMDBLITIMAGE)
- Propre Implémentation du chargeur de police TrueType / OpenType
- Avec une prise en charge expérimentale de la police d'OpenType à saveur de post-scriptum (TNC Type 2)
- Avec une police d'OpenType de trueype de travail semi-travail
- Avec une génération automatique de champs de champs signées à distance de haute qualité parallisées de haute qualité (basée sur les idées de mise en œuvre de la génération de champs de distance signée analytique pratique 2D et avec PASMP)
- Une fonctionnalité de textures vectorielles de police est également prévue pour l'avenir, pour une propre implémentation de technologie de rendu hybride de la police hybride à texture Vector-Texture combinée, en fonction de la taille de la police, et ainsi de suite, où les canaux RVB d'un Texel seraient alors le tampon Vulkan ou le BEZER DONNESSE (NEOT). Bezier), et le canal alpha d'un Texel ne serait que le champ de distance signé 8 bits.
- Classe de lots de sprite
- Atlas de sprite
- Avec des constructions automatiques d'atlas Sprite Fast à la volée avec une culture / une coupe automatique en option, de sorte que vous n'avez pas besoin d'outils de génération d'atlas sprite externes, mais néanmoins, la sortie de l'outil TexturePacker est également prise en charge par Pasvulkan
- Et des utils et des trucs plus utiles pour la programmation Vulkan
- Plateformes prises en charge:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64 / AARCH64)
- Linux (x86-32, x86-64, bras)
- Moltenvk Wrapper (non testé)
- Framework d'applications optimisées de style OOP (pasvulkan.application.pas pasvulkan.android.pas pasvulkan.sdl2.pas pasvulkan.starticlinking.pas)
- La conception globale de ce cadre d'applications optimisé par Vulkan est le mélange entre les concepts de conception VCL / LCL / FCL et LiBGDX (et certaines de mes propres idées de conception, bien sûr).
- Il utilise SDL 2.x comme API de couche d'abstraction OS-API
- Single-window uniquement, il est donc convivial pour le maximum, dans la mesure du possible.
- Pour les applications multi-fenêtres, vous devez faire vos propres trucs (par exemple, votre propre cadre ou utiliser le VCL / LCL, etc.), car il est hors de l'objectif des cibles de ce cadre d'application optimisé vulkan
- Récupération automatique pour:
- Vk_error_surface_lost_khr
- Vk_error_out_of_date_khr
- Vk_suboptimal_khr
- Mais pas pour, par exemple, vk_error_device_lost, vk_error_out_of_device_memory ou vk_error_out_of_host_memory, car ce sont des situations critiques, que vous devez vous gérer.
- Création et loisirs de chaîne d'échanges automatiques
- La réavisage de l'abstraction SDL2, pour le cas futur possible, lorsque ce cadre d'application optimisé vulkan ne sera pas basé sur SDL 2.0 pour les plates-formes cibles suivantes suivantes, le commutateur Nintendo comme exemple, ou lorsque ce cadre d'application optimisé vulkan ne sera pas plus basé sur SDL 2.0 pour certaines plates-formes cibles déjà prises en charge.
- Plateformes prises en charge:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64 / AARCH64)
- Linux (x86-32, x86-64, bras)
- Mais pas encore en fusion (puisque SDL 2.x n'a pas encore de support pour cela, jusqu'à présent, je sais)
Licence (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.
Lignes directrices générales pour les contributeurs de code
- Assurez-vous que vous êtes légalement autorisé à apporter une contribution sous la licence ZLIB.
- L'en-tête de licence ZLIB va en haut de chaque fichier source, avec un avis de droit d'auteur approprié.
- Cet emballage Pasvulkan ne peut être utilisé qu'avec l'en-tête Vulkan Pascal de Pasvulkan.
- Après une demande de traction, vérifiez l'état de votre demande de traction sur https://github.com/bero1985/pasvulkan
- Écrivez le code compatible avec Delphi> = 2009 et Freepascal> = 3.1.1
- N'utilisez pas les bibliothèques / bibliothèques / unités de Delphi-Only, Freepascal uniquement ou Lazarus-uniquement, mais si nécessaire, faites-le hors defable.
- Aucune utilisation des bibliothèques / unités tierces possible, mais si nécessaire, rendez-vous hors sidéfable.
- Essayez d'utiliser Const lorsque cela est possible.
- Assurez-vous de commenter Writeln, utilisé lors du débogage.
- Assurez-vous que le code compile sur des plates-formes 32 bits et 64 bits (x86-32, x86-64, arm, arm64, etc.).
- Assurez-vous que le code s'exécute sur toutes les plateformes avec le support Vulkan
Présenter des vidéos
Pour des vidéos de vitrine plus récentes, voir la playlist YouTube
Pasvulkan sur Android 7.0 sur une tablette Nvidia Shield K1
Pasvulkan sur un nvidia geforce GTX 970 sous Windows 10 Pro