Пасвулкан
Генератор заголовков Vulkan и обертка API в стиле Вулкан ООП для объекта Pascal (Freepascal> = 3.3.1 Trunk FPC и любая недавняя текущая версия Delphi)
Сам блок привязки привязки Vulkan.PAS (включая Vkxml2pas.dpr Converter) IS и остается также совместимой со старой версией Delphi 7, но Pasvulkan.*. PAS -каркасные единицы не совсем не являются Delphi 7, потому что они используют новые объекты Pascal. Версия компилятора не поддерживает.
Поддержите меня
Поддержите меня в Patreon
Обо мне / мои контактные данные
- Мой сайт
- Мой блог
- Моя учетная запись в Твиттере
- Моя учетная запись в Facebook
Важная информация о проверке репозитории
Если у вас проблемы с командой клона GIT, потому что репозиторий слишком велик для вас или вам не нужна полная история репозитория, вы можете вместо этого использовать следующую команду:
git clone --single-branch --depth 1 --recursive https://github.com/BeRo1985/pasvulkan.git pasvulkan
или соответственно для варианта SSH:
git clone --single-branch --depth 1 --recursive [email protected]:BeRo1985/pasvulkan.git pasvulkan
Или, в качестве альтернативы, вы можете попытаться отключить сжатие, что также может помочь в некоторых случаях, но осведомленность, это глобальная настройка для всех репозиториев GIT в вашей системе:
git config --global core.compression 0
Важная информация
Сначала вы должны скомпилировать (но неполный) менеджер проектов Pasvulkan с использованием CompileProjectManager (*NIX) или CompileProjectManager.bat (Windows), чтобы затем использовать менеджер Pasvulkan Project в качестве инструмента командной строки с именем ProjectManager (.exe).
И вам нужна либо самая современная версия Delphi, либо самую современную версию компилятора SVN Freepascal (и не только стабильная версия компилятора Freepascal), включая правильные пути в переменной среды вашего пути к этим двоичным файлам компилятора. И если вы также хотите использовать цель Android, то же самое относится и к Android Studio, Java SDK, Android SDK и Android NDK, что они должны быть установлены в их местоположениях по умолчанию (как предписывает Google или определяет эти местоположения по умолчанию, без исключений) и должны быть правильно существовать в переменных системы.
А для цели Android вам нужны все установки Freepascal Cross Compiler для всех от Android Official Proceed, поддерживаемых целями процессора без каких -либо исключений, и это: x86_32/i386, x86_64/amd64, arm32 и aarch64/arm64
Как построить и запустить пример проекта
После того, как вы собрали бинар ProjectManager, вам нужно сделать следующее:
| Шаг | Окна | *Никс | Описание |
|---|
| 1 | projectmanager compileassets examples | ./projectmanager compileassets examples | Он собирает файлы активов |
| 2 | projectmanager build examples | ./projectmanager build examples | Он собирает сам пример кода |
| 3 | projectmanager run examples | ./projectmanager run examples | Он начинает пример бинарного |
Как создать новый проект
После того, как вы собрали бинар ProjectManager, вам нужно сделать следующее:
| Шаг | Окна | *Никс | Описание |
|---|
| 1 | projectmanager create [yourprojectname] | ./projectmanager create [yourprojectname] | Он создает новый проект |
Важно: где имя проекта должно быть действительным строчным идентификатором Pascal и Java и даже действительным именем файла одновременно!
Для получения дополнительной информации о менеджере проекта
После того, как вы собрали бинар ProjectManager, просто выполните projectmanager -h в своей оболочке или консоли для подробного вывода справки.
Функции
- Вульковский заголовок в стиле C-API (Vulkan.PA, который генерируется VKXML2PAS.DPR)
- Это всегда актуально, так как он автоматически генерируется через vkxml2pas.dpr
- Поддерживаемые платформы:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64/AARCH64)
- Linux (x86-32, x86-64, ARM)
- Moltenvk обертка (непроверенная)
- OOP-vulkan Framework (Pasvulkan.framework.pas)
- Объектно -ориентированная вулканская абстракция API
- На основе красно-черно-черного менеджера памяти для управления памятью Vulkan, для управления субсораспределениями в выделенных буферах и для поддержания общего количества одновременных ассигнований в прямом эфире и меньше, чем tvkphysicalDevicelimits.maxmemoryallocationCount.
- Погрузчики текстур с собственными реализациями погрузчика объекта-коренного погрузчика, поэтому он не зависит от внешних сторонних погрузчиков изображений, даже независимо от VCL, LCL и FCL.
- BMP (непроверенный, но он должен работать)
- DDS
- HDR
- Ktx
- JPG / JPEG (только базовый, только Huffman, кодированный и только YCRCB сейчас)
- PNG (все типы, включая 16-битные каналы PNG)
- TGA
- Особенности функции экрана с замены сети сети
- Включая собственную объектно-ненущую минимальную реализацию писателя PNG (в том числе собственный минимальный статический-хаффмен только смягчающий реализацию)
- Включая собственную реализацию писателя JPEG-объекта ObjectPascal
- Дополнительная автоматическая генерация текстуры на основе графических процессоров (с помощью vkcmdblitimage)
- Собственная объектпаскаль-ненужная тренатип/opentype font. Реализация загрузки шрифта
- С экспериментальной поддержкой PostScript Provist Provist Opentype (CFF Type 2)
- С полупроводящими тренатипами, в сочетании
- С автоматическим высококачественным высококачественным быстрого параллизованного знакового поля дистанции (на основе идей реализации из практического аналитического 2D-подписанного генерации расстояния и с PASMP)
- Функция текстур векторов шрифта также запланирована на будущее для собственной комбинированной реализации технологии гибридного шрифта с вектором-текстурой, зависимой от размера шрифта и т. Д., где каналы RGB из Texel были бы тогда вместе или с 24-битными данными (не сведенными (не в Vulkanne Buzfffer), с vulkanne-bezfffer-x-x-x-lind-lind-lind-link-lind-lind-lind-x. Безье), а альфа-канал Texel был бы всего лишь 8-битным подписанным полем расстояния.
- Спрайт -партийный класс
- Спрайт атласы
- С автоматическими быстрыми конструкциями атласа Sprite Sprite с дополнительной автоматической обрезкой/обрезкой, чтобы вам не нужны инструменты генерации внешнего атласа, но, тем не менее, выходной сигнал TexturePacker также поддерживается Pasvulkan
- и более полезные утилиты и прочее для программирования Vulkan
- Поддерживаемые платформы:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64/AARCH64)
- Linux (x86-32, x86-64, ARM)
- Moltenvk обертка (непроверенная)
- Оптимизированная прикладная структура в стиле oop (pasvulkan.application.pas pasvulkan.android.pas pasvulkan.sdl2.pas pasvulkan.starticling.pas)
- Общая конструкция этой оптимизированной вулканской основы-это смесь между концепциями дизайна VCL/LCL/FCL и LIBGDX (и некоторые из моих собственных дизайнерских идей, конечно).
- Он использует SDL 2.x в качестве API API абстракции OS-API
- Только для одного окна, так что он имеет кроссплатформенное удобство для максимума, насколько это возможно.
- Для приложений с несколькими окнами вы должны делать свои собственные вещи (например, собственные структуры или использование VCL/LCL и т. Д.), Поскольку он находится вне фокуса целей из этой оптимизированной вульканской структуры приложения
- Автоматическое восстановление для:
- Vk_error_surface_lost_khr
- VK_ERROR_OUT_OF_DATE_KHR
- Vk_suboptimal_khr
- Но не для, например, VK_ERROR_DEVICE_LOST, VK_ERROR_OUT_OF_DEVICE_MEMORY или VK_ERROR_OUT_OF_HOST_MEMORY, потому что это критические ситуации, которые вы должны обрабатывать сами.
- Автоматическое создание и отдых с цепочкой.
- Повторное возмещение абстракции SDL2, для возможного будущего случая, когда эта структура, оптимизированная вульков, не будет основана на SDL 2.0 для возможных дальнейших следующих целевых платформ, Nintendo Switch в качестве примера, или когда эта платформа, оптимизированная Vulkan, не будет более на основе SDL 2.0 для некоторых уже поддерживаемых целевых платформ.
- Поддерживаемые платформы:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64/AARCH64)
- Linux (x86-32, x86-64, ARM)
- Но пока нет Moltenvk (поскольку SDL 2.x пока не поддерживает его, пока я знаю)
Лицензия (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.
Общие руководящие принципы для участников кода
- Убедитесь, что вам по закону разрешено внести вклад по лицензии Zlib.
- Заголовок лицензии Zlib идет в верхней части каждого исходного файла с соответствующим уведомлением об авторском праве.
- Эта обертка Pasvulkan может использоваться только с заголовком Valkan Pascal, принадлежащего Pasvulkan.
- После запроса на привлечение проверьте состояние вашего запроса на вытяжение на https://github.com/bero1985/pasvulkan
- Записать код, который совместим с Delphi> = 2009 и Freepascal> = 3.1.1
- Не используйте только Delphi, только Freepascal или Lazarus Bibrities/Units, но при необходимости, сделайте это.
- Никакого использования сторонних библиотек/подразделений как можно больше, но при необходимости сделайте это.
- Попробуйте использовать Const, когда это возможно.
- Обязательно прокомментируйте Writeln, используемый во время отладки.
- Убедитесь, что код компилируется на 32-битных и 64-битных платформах (x86-32, x86-64, ARM, ARM64 и т. Д.).
- Убедитесь, что код работает на всех платформах с поддержкой Vulkan
Демонстрировать видео
Для получения более поздних видеороликов See See YouTube Playlist
Pasvulkan на Android 7.0 на планшете Nvidia Щит K1
Pasvulkan на NVIDIA GEFORCE GTX 970 под Windows 10 Pro