pasta
Generador de encabezado Vulkan y envoltura de API de estilo Vulkan OOP para Object Pascal (Freepascal> = 3.3.1 FPC Trunk y cualquier versión actual de Delphi actual)
La unidad de encabezado de enlace vulkan.pas en sí (incluido el convertidor VKXML2PAS.PRIS) es y se mantiene también compatible con la antigua versión de Delphi 7, pero el Pasvulkan.*. Las unidades de marco de Pas no son más compatibles de Delphi 7, porque están utilizando nuevas características de sintaxis de objetos, como tal como tal como tal como tal, operador de sobrecarga de operadores, avanzados, avanzados, y, por lo que están utilizando las nuevas características de los objetos de Pascal, que son las nuevas y de los que son los que son los más genéricos, y lo más importante, que se realizan. La versión del compilador no tiene soporte para.
Apoyarme
Apóyame en Patreon
Sobre mi / mis datos de contacto
- Mi sitio web
- Mi blog
- Mi cuenta de Twitter
- Mi cuenta de Facebook
Información de pago importante del repositorio
Si tiene problemas con el comando Git Clone, debido a que el repositorio es demasiado grande para usted o no necesita el historial completo del repositorio, puede intentar usar el siguiente comando: en su lugar: en su lugar:
git clone --single-branch --depth 1 --recursive https://github.com/BeRo1985/pasvulkan.git pasvulkan
o respectivamente para la variante SSH:
git clone --single-branch --depth 1 --recursive [email protected]:BeRo1985/pasvulkan.git pasvulkan
O alternativamente, puede intentar desactivar la compresión, lo que también puede ayudar en algunos casos, pero consciente, es un escenario global para todos los repositorios GIT en su sistema:
git config --global core.compression 0
Información importante
Primero debe compilar el (pero incompleto) Pasvulkan Project Manager utilizando CompilEprojectManager (*nix) o CompilEprojectManager.bat (Windows) para que luego pueda usar el administrador de proyectos Pasvulkan como una herramienta de línea de comandos llamada ProjectManager (.exe).
Y sí necesita la versión de Delphi más actual o la versión SVN Trunk más actual del compilador Freepascal (y no solo la versión estable del compilador Freepascal), incluidas las rutas correctas en su entorno de ruta variable a estos binarios del compilador. Y si también desea usar el objetivo de Android, lo mismo se aplica a Android Studio, el Java SDK, el SDK de Android y el NDK de Android, que deben instalarse en sus ubicaciones predeterminadas (como Google prescribe o especifica estas ubicaciones predeterminadas, sin excepciones) y deben existir correctamente en las variables del entorno del sistema.
Y para el objetivo de Android, necesita todas las instalaciones de compiladores cruzados de Freepascal para todos de los objetivos de CPU compatibles con Android sin ninguna excepción, y estas son: x86_32/i386, x86_64/amd64, ARM32 y AARCH64/ARM64
Cómo construir y ejecutar el proyecto de ejemplo
Después de compilar el binario ProjectManager, debe hacer lo siguiente:
| Paso | Windows | *nada | Descripción |
|---|
| 1. | projectmanager compileassets examples | ./projectmanager compileassets examples | Compila los archivos de activos |
| 2. | projectmanager build examples | ./projectmanager build examples | Compila el código de ejemplo en sí |
| 3. | projectmanager run examples | ./projectmanager run examples | Inicia el ejemplo binario |
Cómo crear un nuevo proyecto
Después de compilar el binario ProjectManager, debe hacer lo siguiente:
| Paso | Windows | *nada | Descripción |
|---|
| 1. | projectmanager create [yourprojectname] | ./projectmanager create [yourprojectname] | Crea el nuevo proyecto |
Importante: ¡donde el nombre del proyecto debe ser un identificador Pascal y Java válido en minúsculas e incluso un nombre de archivo válido al mismo tiempo!
Para obtener más información sobre el gerente del proyecto
Después de compilar el binario ProjectManager, simplemente ejecute projectmanager -h en su shell o consola para obtener una salida de ayuda detallada.
Características
- Encabezado Vulkan de estilo C-API (Vulkan.pas que es generado por VKXML2PAS.DPR)
- Siempre está actualizado, ya que se genera automáticamente a través del VKXML2PAS.DPR
- Plataformas compatibles:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64/AARCH64)
- Linux (x86-32, x86-64, brazo)
- Envoltura de fundición (no probada)
- Vulkan Framework basado en OOP (pasvulkan.framework.pas)
- Abstracción de la API Vulkan orientada a objetos
- Mejor administrador de memoria basado en el árbol rojo-negro para la gestión de la memoria Vulkan, para administrar las subalocaciones en los buffers asignados y para mantener el recuento total de asignaciones en vivo simultáneas lo más bajas posible y menos que TVKPhysicalDeviceLimits.MaxMemoryCount.
- Cargadores de textura con propias implementaciones de cargadores de objetos nativos ObjectPascal, por lo que es independiente de los cargadores de imágenes externas de terceros, incluso independientes de VCL, LCL y FCL.
- BMP (no probado, pero debería funcionar)
- Dds
- HDR
- Ktx
- JPG / JPEG (solo línea de base, solo Huffman codificada y solo YCRCB en este momento ahora)
- PNG (todos los tipos, incluidos PNG de canales de 16 bits)
- TGA
- Características Funciones de API de captura de pantalla de cadena de intercambio
- incluyendo una propia implementación de escritor PNG mínimo ObjectPascal-Native-Native (incluida una propia implementación mínima de huffman staticman solo)
- incluyendo una propia implementación de escritor JPEG de ObjectPascal-nativo
- Generación de textura mipmap de textura automática basada en GPU (con ayuda de VKCMDBlitimage)
- PROPIO OBJETPASCAL-NATIVO TRUETYPE/OPENTYPE IMPLEMENTACIÓN DEL COMPARACIÓN DE FUENTES
- Con soporte de fuentes OpenType con sabor a poste postscript experimental (CFF Tipo 2)
- Con el intérprete de código de byte de insinuación de fuentes con sabor a un trueType en semi-trabajo como una opción opcional
- Con la generación automática de campo de distancia firmada de alta calidad de alta calidad (basada en las ideas de implementación de la generación de campo de distancia con firmado 2D analítico práctico y con PASMP)
- También se planea una función de texturas vectoriales de fuente para el futuro, para una propia implementación de tecnología de reproducción de fuentes híbridas de campo vectorial combinado de campo con firma de distancias. Bezier), y el canal alfa de un Texel sería solo el campo de distancia firmado de 8 bits.
- Clase de lotes de sprite
- Atlas de sprite
- Con construcciones automáticas de Atlas Atlas de Sprite Sprite con recorte/recorte automático opcional, para que no necesite herramientas de generación de Atlas Sprite Sprite Externos, pero sin embargo, la salida de la herramienta TexturePacker también es compatible con Pasvulkan
- y más útiles y cosas para la programación de vulkan
- Plataformas compatibles:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64/AARCH64)
- Linux (x86-32, x86-64, brazo)
- Envoltura de fundición (no probada)
- Marco de aplicaciones optimizado de Vulkan de estilo OOP (pasvulkan.application.pas pasvulkan.android.pas pasvulkan.sdl2.pas pasvulkan.starticlinking.pas)
- El diseño general de este marco de aplicaciones optimizado por Vulkan es la mezcla entre los conceptos de diseño VCL/LCL/FCL y LIBGDX (y algunas de mis propias ideas de diseño, por supuesto).
- Utiliza SDL 2.x como API de capa de abstracción OS-API
- Solo para una sola ventana, por lo que es amigable con las plataformas multiplataformas hasta el máximo, en la medida de lo posible.
- Para aplicaciones de múltiples ventanas, debe hacer sus propias cosas (por ejemplo, marco propio o usar el VCL/LCL, etc.), porque está fuera del enfoque de los objetivos de este marco de aplicaciones optimizado de Vulkan
- Recuperación automática para:
- VK_ERROR_SURFACE_LOST_KHR
- Vk_error_out_of_date_khr
- Vk_suboptimal_khr
- Pero no para, por ejemplo, VK_ERROR_DEVICE_LOST, VK_ERROR_OUT_OF_DEVICE_MEMORY o VK_ERROR_OUT_OF_HOST_MEMORY, porque esas son situaciones críticas, que debe manejar usted mismo.
- Creación y recreación automática de la cadena de intercambio
- La reanstrucción de la abstracción SDL2, para el posible caso futuro, cuando este marco de aplicaciones optimizado por Vulkan no se basará en SDL 2.0 para posibles plataformas de destino más siguientes, el Switch Nintendo como ejemplo, o cuando este marco de aplicaciones optimizado por Vulkan no se basará más en SDL 2.0 para algunas plataformas de objetivos ya compatibles.
- Plataformas compatibles:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64/AARCH64)
- Linux (x86-32, x86-64, brazo)
- Pero todavía no hay fundido (ya que SDL 2.x no tiene apoyo para ello, hasta ahora lo sé)
Licencia (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.
Directrices generales para colaboradores de código
- Asegúrese de que se le permita legalmente hacer una contribución bajo la licencia ZLIB.
- El encabezado de la licencia ZLIB va en la parte superior de cada archivo fuente, con un aviso apropiado de derechos de autor.
- Este envoltorio de Pasvulkan solo se puede usar con el encabezado Vulkan Pascal de Pasvulkan.
- Después de una solicitud de extracción, verifique el estado de su solicitud de extracción en https://github.com/bero1985/pasvulkan
- Código de escritura que es compatible con Delphi> = 2009 y Freepascal> = 3.1.1
- No use Delphi-solo bibliotecas/unidades solo de Delphi-solo, solo por Lázaro o solo de Lázaro, pero si es necesario, hágalo fuera de ifdef.
- No es posible el uso de las bibliotecas/unidades de terceros, pero si es necesario, hágalo fuera de lo que pueda.
- Intente usar const cuando sea posible.
- Asegúrese de comentar WriteLn, usado mientras depuración.
- Asegúrese de que el código se compila en plataformas de 32 y 64 bits (x86-32, x86-64, brazo, brazo64, etc.).
- Asegúrese de que el código se ejecute en todas las plataformas con soporte de Vulkan
Videos de exhibición
Para videos de exhibición más recientes, vea la lista de reproducción de YouTube
Pasvulkan en Android 7.0 en una tableta Nvidia Shield K1
Pasvulkan en un Nvidia GeForce GTX 970 en Windows 10 Pro