Pasvulkan
เครื่องกำเนิดส่วนหัวของ Vulkan และ Wulkan Oop-style wrapper สำหรับวัตถุ pascal (freepascal> = 3.3.1 fpc trunk และรุ่น Delphi ปัจจุบันล่าสุดใด ๆ )
ชุดส่วนหัวที่มีผลผูกพันของ Vulkan.pas เอง (รวมถึง Vkxml2pas.dpr Converter) และยังคงเข้ากันได้กับรุ่น Delphi 7 เก่า แต่ Pasvulkan.*. PAS Framework Units นั้นไม่สามารถใช้งานได้ เวอร์ชันคอมไพเลอร์ Delphi 7 ไม่มีการสนับสนุน
สนับสนุนฉัน
สนับสนุนฉันที่ Patreon
เกี่ยวกับฉัน / รายละเอียดการติดต่อของฉัน
- เว็บไซต์ของฉัน
- บล็อกของฉัน
- บัญชี Twitter ของฉัน
- บัญชี Facebook ของฉัน
ข้อมูลการชำระเงินที่เก็บที่สำคัญ
หากคุณมีปัญหากับคำสั่ง git clone เนื่องจากที่เก็บมีขนาดใหญ่เกินไปสำหรับคุณหรือคุณไม่ต้องการประวัติทั้งหมดของที่เก็บคุณสามารถลองใช้คำสั่งต่อไปนี้แทน:
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 Manager เป็นเครื่องมือบรรทัดคำสั่งชื่อ ProjectManager (.Exe)
และคุณต้องใช้ทั้ง Delphi รุ่นล่าสุดหรือรุ่น SVN Trunk ปัจจุบันของคอมไพเลอร์ Freepascal (และไม่ใช่แค่เวอร์ชันที่เสถียรของคอมไพเลอร์ freepascal) รวมถึงเส้นทางที่ถูกต้องในตัวแปรสภาพแวดล้อมเส้นทางของคุณไปยังไบนารีคอมไพเลอร์เหล่านี้ และหากคุณต้องการใช้เป้าหมาย Android เช่นเดียวกันกับ Android Studio, Java SDK, Android SDK และ Android NDK ว่าสิ่งเหล่านี้จะต้องติดตั้งในตำแหน่งเริ่มต้น (ตามที่ Google กำหนดหรือระบุตำแหน่งเริ่มต้นเหล่านี้โดยไม่มีข้อยกเว้น)
และสำหรับเป้าหมาย Android คุณต้องมีการติดตั้งคอมไพเลอร์ Cross Compiler ทั้งหมดจากเป้าหมาย CPU อย่างเป็นทางการของ Android โดยไม่มีข้อยกเว้นใด ๆ และนี่คือ: x86_32/i386, x86_64/AMD64, ARM32 และ Aarch64/ARM64
วิธีการสร้างและเรียกใช้โครงการตัวอย่าง
หลังจากที่คุณรวบรวม ProjectManager Binary คุณต้องทำสิ่งต่อไปนี้:
| ขั้นตอน | หน้าต่าง | *ห้าม | คำอธิบาย |
|---|
| 1. | projectmanager compileassets examples | ./projectmanager compileassets examples | มันรวบรวมไฟล์สินทรัพย์ |
| 2. | projectmanager build examples | ./projectmanager build examples | มันรวบรวมรหัสตัวอย่างเอง |
| 3. | projectmanager run examples | ./projectmanager run examples | มันเริ่มต้นตัวอย่างไบนารี |
วิธีสร้างโครงการใหม่
หลังจากที่คุณรวบรวม ProjectManager Binary คุณต้องทำสิ่งต่อไปนี้:
| ขั้นตอน | หน้าต่าง | *ห้าม | คำอธิบาย |
|---|
| 1. | projectmanager create [yourprojectname] | ./projectmanager create [yourprojectname] | มันสร้างโครงการใหม่ |
สำคัญ: ในกรณีที่ชื่อโครงการต้องเป็นตัวระบุ Pascal และ Java ตัวพิมพ์เล็กที่ถูกต้อง และ แม้แต่ชื่อไฟล์ที่ถูกต้องในเวลาเดียวกัน!
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับผู้จัดการโครงการ
หลังจากที่คุณได้รวบรวม ProjectManager Binary เพียงดำเนินการ projectmanager -h ในเชลล์หรือคอนโซลของคุณเพื่อส่งออกโดยละเอียด
คุณสมบัติ
- ส่วนหัวของ C-Api-Api-style (vulkan.pas ซึ่งสร้างโดย vkxml2pas.dpr)
- มันทันสมัยอยู่เสมอเนื่องจากมีการสร้างอัตโนมัติผ่าน vkxml2pas.dpr
- แพลตฟอร์มที่รองรับ:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64/Aarch64)
- Linux (x86-32, x86-64, แขน)
- Moltenvk wrapper (ยังไม่ทดลอง)
- กรอบ Vulkan ที่ใช้ OOP (pasvulkan.framework.pas)
- Abstraction Vulkan API เชิงวัตถุ
- ตัวจัดการหน่วยความจำสีดำดำที่ดีที่สุดสำหรับการจัดการหน่วยความจำ Vulkan เพื่อจัดการการจัดเรียงย่อยในบัฟเฟอร์ที่จัดสรรและเพื่อให้จำนวนการจัดสรรสดทั้งหมดต่ำที่สุดเท่าที่จะเป็นไปได้
- ตัวตักพื้นผิวที่มีการใช้งานตัวโหลดแบบ objectPascal-Natial ของตัวเองดังนั้นจึงเป็นอิสระจากตัวโหลดภาพบุคคลที่สามภายนอกแม้จะเป็นอิสระจาก VCL, LCL และ FCL
- BMP (ยังไม่ทดลอง แต่ควรใช้งานได้)
- DDS
- HDR
- KTX
- jpg / jpeg (เฉพาะพื้นฐานเฉพาะ Huffman-coded และ ycrcb เท่านั้นในขณะนี้)
- PNG (ทุกประเภทรวมถึงช่อง 16 บิต PNGs)
- TGA
- ฟีเจอร์สกรีนช็อตสกรีนช็อตสกรีนช็อตฟังก์ชั่น API
- รวมถึงการใช้งานผู้เขียน PNG ที่มีความเป็นเจ้าของโดยใช้ ObjectPascal-Natial (รวมถึงการใช้งานแบบคงที่น้อยที่สุดของตัวเองเท่านั้น
- รวมถึงการใช้งานนักเขียน JPEG ObjectPascal-Natial ของตัวเอง
- การสร้างพื้นผิว MIPMAP ที่ใช้ GPU อัตโนมัติ (ด้วยความช่วยเหลือของ VKCMDBLITIMAGE)
- ObjectPascal-Natial Truetype/Opentype Font Loader การใช้งาน
- ด้วยการสนับสนุนแบบอักษร OpenType Postscript ที่ได้รับการทดลอง (CFF Type 2)
- ด้วยการทำงานแบบฟอนต์แบบฟอนต์แบบฟูเทอร์แบบทรูท
- ด้วยการสร้างการสร้างระยะไกลที่ลงนามระยะไกลที่มีคุณภาพสูงโดยอัตโนมัติ (ขึ้นอยู่กับแนวคิดการใช้งานจากการวิเคราะห์ระยะทางที่ลงนามระยะทางที่ลงนามในทางปฏิบัติและด้วย PASMP)
- นอกจากนี้ยังมีการวางแผนคุณสมบัติพื้นผิวของเวกเตอร์แบบอักษรสำหรับอนาคตสำหรับการใช้เทคโนโลยีแบบฟิลด์แบบฟิลด์แบบผสมผสานแบบฟิลด์ + เวกเตอร์แบบผสมผสานแบบฟิลด์แบบฟิลด์ Bezier) และช่องอัลฟ่าของ Texel จะเป็นเพียงระยะทางระยะทาง 8 บิต
- คลาสสไปรต์แบตช์
- สไปรต์แผนที่
- ด้วยการสร้าง Atlas Sprite Atlas ที่รวดเร็วพร้อมการปลูกพืช/ตัดแต่งอัตโนมัติเสริมเพื่อให้คุณไม่จำเป็นต้องใช้เครื่องมือสร้าง Atlas Sprite ภายนอก แต่ยังรองรับ Pasvulkan
- และประโยชน์และสิ่งของที่มีประโยชน์มากขึ้นสำหรับการเขียนโปรแกรม Vulkan
- แพลตฟอร์มที่รองรับ:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64/Aarch64)
- Linux (x86-32, x86-64, แขน)
- Moltenvk wrapper (ยังไม่ทดลอง)
- กรอบแอปพลิเคชัน Vulkan ที่ได้รับการปรับแต่งรูปแบบ OOP (pasvulkan.application.pas pasvulkan.android.pas pasvulkan.sdl2.pas pasvulkan.starticlinking.pas)
- การออกแบบโดยรวมของกรอบแอปพลิเคชัน Vulkan ที่ได้รับการปรับแต่งนี้เป็นส่วนผสมระหว่างแนวคิดการออกแบบ VCL/LCL/FCL และ LIBGDX (และแนวคิดการออกแบบบางอย่างของฉันเอง)
- ใช้ SDL 2.x เป็น API API API OS-API Abstraction Layer API
- หน้าต่างเดียวเท่านั้นดังนั้นจึงเป็นมิตรกับการข้ามแพลตฟอร์มสูงสุดเท่าที่จะทำได้
- สำหรับแอปพลิเคชันหลายหน้าต่างคุณต้องทำสิ่งของของคุณเอง (ตัวอย่างเช่นเฟรมเวิร์กของตัวเองหรือใช้ VCL/LCL เป็นต้น) เพราะมันอยู่ห่างจากเป้าหมายจากกรอบแอปพลิเคชัน Vulkan ที่ปรับให้เหมาะสม
- การกู้คืนอัตโนมัติสำหรับ:
- 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 Abstraction สำหรับกรณีในอนาคตที่เป็นไปได้เมื่อกรอบแอปพลิเคชัน Vulkan ที่ได้รับการปรับให้เหมาะสมนี้จะไม่ได้รับ SDL 2.0 ขึ้นอยู่กับแพลตฟอร์มเป้าหมายที่เป็นไปได้
- แพลตฟอร์มที่รองรับ:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64/Aarch64)
- Linux (x86-32, x86-64, แขน)
- แต่ยังไม่มี 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 นี้อาจใช้กับส่วนหัวของ Pasvulkan Pascal Pascal เท่านั้น
- หลังจากคำขอดึงให้ตรวจสอบสถานะของคำขอดึงของคุณใน https://github.com/bero1985/pasvulkan
- เขียนรหัสที่เข้ากันได้กับ delphi> = 2009 และ freepascal> = 3.1.1
- อย่าใช้ห้องสมุด/ห้องสมุด Delphi-only, freepascal-only หรือ lazarus-only เท่านั้น แต่ถ้าจำเป็นให้ออกไปให้เป็นไปได้
- ไม่มีการใช้ห้องสมุด/หน่วยบุคคลที่สามให้มากที่สุด แต่ถ้าจำเป็น
- พยายามใช้ const เมื่อเป็นไปได้
- ตรวจสอบให้แน่ใจว่าได้แสดงความคิดเห็น Writeln ใช้ขณะทำการดีบัก
- ตรวจสอบให้แน่ใจว่ารหัสรวบรวมบนแพลตฟอร์ม 32 บิตและ 64 บิต (x86-32, x86-64, ARM, ARM64 ฯลฯ )
- ตรวจสอบให้แน่ใจว่ารหัสทำงานบนแพลตฟอร์มทั้งหมดด้วยการสนับสนุน Vulkan
วิดีโอแสดง
สำหรับวิดีโอ Showcase ล่าสุดดูเพลย์ลิสต์ YouTube
Pasvulkan บน Android 7.0 บนแท็บเล็ต Nvidia Shield K1
Pasvulkan บน Nvidia GeForce GTX 970 ภายใต้ Windows 10 Pro