Pasvulkan
Vulkan Header Generator und Vulkan OOP-API-Wrapper für Objektpascal (Freepascal> = 3.3.1 FPC-Kofferraum und jede aktuelle aktuelle Delphi-Version)
Die Vulkan.pas -Bindungs -Header -Einheit selbst (einschließlich des VKXML2PAS.DPR -Konverters) ist und bleibt auch kompatibel mit der alten Delphi 7 -Version, aber die Pasvulkan. Die Compiler -Version hat keine Unterstützung für.
Unterstütze mich
Unterstütze mich bei Patreon
Über mich / meine Kontaktdaten
- Meine Website
- Mein Blog
- Mein Twitter -Konto
- Mein Facebook -Konto
Wichtige Repository -Checkout -Informationen
Wenn Sie Probleme mit dem Befehl git klone haben, da das repository zu groß für Sie ist oder Sie nicht den vollständigen Verlauf des Repositorys benötigen, können Sie stattdessen versuchen, den folgenden Befehl zu verwenden:
git clone --single-branch --depth 1 --recursive https://github.com/BeRo1985/pasvulkan.git pasvulkan
oder für die SSH -Variante:
git clone --single-branch --depth 1 --recursive [email protected]:BeRo1985/pasvulkan.git pasvulkan
Oder alternativ können Sie versuchen, die Komprimierung auszuschalten, was auch in einigen Fällen helfen kann, aber es ist eine globale Einstellung für alle Git -Repositories in Ihrem System:
git config --global core.compression 0
Wichtige Informationen
Sie müssen zuerst den (dennoch unvollständigen) Pasvulkan -Projektmanager mit CompileProjectManager (*NIX) oder compileProjectManager.bat (Windows) kompilieren, damit Sie den Pasvulkan -Projektmanager als Befehlszeilen -Tool mit dem Namen ProjectManager (.exe) verwenden können.
Und Sie benötigen entweder die aktuellste Delphi -Version oder die aktuellste SVN -Trunk -Version des freepascal -Compilers (und nicht nur die stabile Version des Freepascal Compiler), einschließlich der korrekten Pfade in Ihrer Pfadumgebungsvariable zu diesen Compiler -Binärdateien. Und wenn Sie auch das Android -Ziel verwenden möchten, gilt dies auch für Android Studio, den Java SDK, den Android SDK und das Android NDK, dass diese an ihren Standardorten installiert werden müssen (wie Google diese Standardpositionen ohne Ausnahmen vorschreiben oder angeben) und in den Variablen der Systemumgebung korrekt vorhanden sein müssen.
Und für das Android -Ziel benötigen Sie alle freepascal Cross Compiler -Installationen für alle von Android Official unterstützte CPU -Ziele ohne Ausnahme, und diese sind: x86_32/i386, x86_64/amd64, arm32 und aarch64/arm64
So erstellen und das Beispielprojekt ausführen
Nachdem Sie den Projektmanager Binary zusammengestellt haben, müssen Sie Folgendes tun:
| Schritt | Fenster | *Nix | Beschreibung |
|---|
| 1. | projectmanager compileassets examples | ./projectmanager compileassets examples | Es kompiliert die Asset -Dateien |
| 2. | projectmanager build examples | ./projectmanager build examples | Es kompiliert den Beispielcode selbst |
| 3. | projectmanager run examples | ./projectmanager run examples | Es startet das Beispiel Binary |
So erstellen Sie ein neues Projekt
Nachdem Sie den Projektmanager Binary zusammengestellt haben, müssen Sie Folgendes tun:
| Schritt | Fenster | *Nix | Beschreibung |
|---|
| 1. | projectmanager create [yourprojectname] | ./projectmanager create [yourprojectname] | Es schafft das neue Projekt |
WICHTIG: Wenn der Projektname ein gültiger Kleinbuchstaben -Pascal- und Java -Bezeichner und sogar ein gültiger Dateinamen gleichzeitig sein muss!
Weitere Informationen zum Projektmanager
Nachdem Sie den Projektmanager Binary zusammengestellt haben, führen Sie einfach projectmanager -h in Ihrer Shell oder Konsole für eine detaillierte Ausgabe aus.
Merkmale
- Vulkan-Header im C-API-Stil (Vulkan.pas, das von VKXML2PAS.dpr) generiert wird)
- Es ist immer aktuell, da es durch die vkxml2pas.dpr automatisch generiert wird
- Unterstützte Plattformen:
- Windows (x86-32, x86-64)
- Android (X86-32, X86-64, ARM32, ARM64/AArch64)
- Linux (x86-32, x86-64, Arm)
- Moltenvk Wrapper (ungetestete)
- OOP-basierter Vulkan-Framework (Pasvulkan.Framework.pas)
- Objektorientierte Vulkan -API -Abstraktion
- Best-fit-rot-schwarzbaumbasiertes Speichermanager für die Vulkan-Speicherverwaltung, um die Unteralokationen in den zugewiesenen Puffern zu verwalten und um die Gesamtzahl gleichzeitiger Live-Zuordnungen so viel wie möglich und weniger als TVKPhysicaldevicelimits.MaxMemoryAllocationCount zu halten.
- Texturlader mit eigenen Objektpascal-nativen Lader-Implementierungen sind daher unabhängig von externen Bildladern von Drittanbietern, sogar unabhängig von VCL, LCL und FCL.
- BMP (ungetestet, aber es sollte funktionieren)
- Dds
- HDR
- KTX
- JPG / JPEG (nur Grundlinie, nur Huffman-codiert und momentan nur YCRCB)
- PNG (alle Typen, einschließlich 16-Bit-Kanal-PNGs)
- TGA
- Features Swap Chain Screenshot API -Funktionen
- Einbeziehung einer eigenen Objektpascal-nativen minimalen PNG-Autor-Implementierung (einschließlich einer eigenen minimalen Implementierung von statischen Huffman)
- Einschließlich einer eigenen Objektpascal-nativen JPEG-Autor-Implementierung
- Optionale automatische GPU-basierte Textur-MIPMAP-Erzeugung (mit Hilfe von VKCMDBlitimage)
- Eigene Objektpascal-native TrueType/OpenType-Schriftlader-Implementierung
- Mit experimentellem postscript-flavouriertem Openentyp-Schriftunterstützung (CFF-Typ 2)
- Mit dem halbbearbeiteten TrueType-Flavoured Opentype-Schriftart-Byte-Code-Interpreter als optionale Option
- Mit automatischer On-the-Fly-hochwertiger schnell parallizierter Signed District Field Field-Erzeugung (basierend auf den Implementierungsideen aus praktischen analytischen 2D-Signed-Distanzfeldgenerierung und mit PasMP)
- A font vector textures feature is also planned for the future, for an own combined signed-distance-field + vector-texture hybrid font rendering technology implementation, dependently by the font size and so on, where the RGB channels of a texel would be then the together OR'ed 24-bit first-bezier-linked-list-index (to a Vulkan buffer with the bezier data, 0xffffff = no (next) Bezier), und der Alpha-Kanal eines Texel wäre nur das 8-Bit-Signed Distance-Feld.
- Sprite -Batch -Klasse
- Sprite -Atlasen
- Mit automatischen Schnell im Fliege-Sprite-Atlas-Konstruktionen mit optionalem automatischem Zuschneiden/Trimmen, sodass Sie keine externen Tools für die Erzeugung von Sprite Atlas benötigen, wird jedoch auch die Ausgabe des TexturePacker-Tools von Pasvulkan unterstützt
- und mehr nützliche Utils und Dinge für die Vulkanprogrammierung
- Unterstützte Plattformen:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64/AArch64)
- Linux (x86-32, x86-64, Arm)
- Moltenvk Wrapper (ungetestete)
- Oop-Stil Vulkan-optimiertes Anwendungsgerüst (pasvulkan.application.pas pasvulkan.android.pas pasvulkan.sdl2.pas pasvulkan.starticlinking.pas)
- Das Gesamtdesign dieses vulkan-optimierten Anwendungsrahmens ist die Mischung zwischen den Konzepten VCL/LCL/FCL und Libgdx (und natürlich einigen meiner eigenen Designideen).
- Es verwendet SDL 2.x als OS-API-Abstraktionsschicht-API
- Nur eine Windows, so dass es plattformfreundlich bis zum Maximum ist, soweit es möglich ist.
- Für Multi-Window-Anwendungen müssen Sie Ihre eigenen Sachen (z.
- Automatische Wiederherstellung für:
- Vk_error_surface_lost_khr
- Vk_error_out_of_date_khr
- Vk_suboptimal_khr
- aber nicht zum Beispiel vk_error_device_lost, vk_error_out_of_device_memory oder vk_error_out_of_host_memory, da dies kritische Situationen sind, die Sie sich selbst umgehen müssen.
- Automatische Tauschkette Schöpfung und Erholung
- Die Wiederaufnahme der SDL2-Abstraktion für den möglichen Fall, wenn dieses vulkanoptimierte Anwendungsframework nicht auf mögliche weitere folgende Zielplattformen basiert, ist der Nintendo-Switch als Beispiel oder wenn dieses Vulkan-optimierte Anwendungsframework nicht mehr SDL 2.0 für einige bereits unterstützte Zielplattformen ist.
- Unterstützte Plattformen:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64/AArch64)
- Linux (x86-32, x86-64, Arm)
- Aber noch kein Moltenvk (da SDL 2.x noch keine Unterstützung dafür hat, weiß ich bisher)
Lizenz (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.
Allgemeine Richtlinien für Code -Mitwirkende
- Stellen Sie sicher, dass Sie legal einen Beitrag unter der ZLIB -Lizenz leisten dürfen.
- Der ZLIB -Lizenzheader findet oben in jeder Quelldatei mit entsprechender Copyright -Mitteilung.
- Diese Pasvulkan-Verpackung kann nur mit dem Pasvulkan-eigenen Vulkan-Pascal-Header verwendet werden.
- Überprüfen Sie nach einer Pull -Anfrage den Status Ihrer Pull -Anfrage unter https://github.com/bero1985/pasvulkan
- Schreiben Sie Code, der mit Delphi> = 2009 und freepascal> = 3.1.1 kompatibel ist
- Verwenden Sie keine nur Bibliotheken/Einheiten von Delphi, Freepascal oder nur Lazarus, sondern machen Sie es bei Bedarf nicht, IFDEF-ABLEM.
- Keine Verwendung von Bibliotheken/Einheiten von Drittanbietern wie möglich, aber falls erforderlich, machen Sie es aus, IFDEF-möglich zu machen.
- Versuchen Sie, const zu verwenden, wenn möglich.
- Stellen Sie sicher, dass Sie WriteLN ausgeben, das beim Debuggen verwendet wird.
- Stellen Sie sicher, dass der Code auf 32-Bit- und 64-Bit-Plattformen (x86-32, x86-64, Arm, ARM64 usw.) erstellt wird.
- Stellen Sie sicher, dass der Code auf allen Plattformen mit Vulkan -Unterstützung ausgeführt wird
Präsentieren Sie Videos
Neuere Showcase -Videos finden Sie in der YouTube -Wiedergabeliste
Pasvulkan auf Android 7.0 auf einer Nvidia Shield K1 -Tablette
Pasvulkan auf einem Nvidia Geforce GTX 970 unter Windows 10 Pro