Pasvulkan
Vulkan Header Generator dan Wrapper API Vulkan OOP untuk objek Pascal (Freepascal> = 3.3.1 Batang FPC dan versi Delphi saat ini) terbaru)
Unit header pengikat vulkan.pas itu sendiri (termasuk konverter vkxml2pas.dpr) adalah dan tetap juga kompatibel dengan versi Delphi 7 lama, tetapi pasvulkan. 7 Versi kompiler tidak memiliki dukungan untuk.
Dukung saya
Dukung saya di Patreon
Tentang saya / detail kontak saya
- Situs web saya
- Blog saya
- Akun twitter saya
- Akun Facebook saya
Informasi Checkout Repositori Penting
Jika Anda bermasalah dengan perintah git clone, karena repositori terlalu besar untuk Anda atau Anda tidak memerlukan riwayat penuh repositori, Anda dapat mencoba menggunakan perintah berikut sebagai gantinya:
git clone --single-branch --depth 1 --recursive https://github.com/BeRo1985/pasvulkan.git pasvulkan
atau masing -masing untuk varian SSH:
git clone --single-branch --depth 1 --recursive [email protected]:BeRo1985/pasvulkan.git pasvulkan
Atau sebagai alternatif, Anda dapat mencoba mematikan kompresi, yang juga dapat membantu dalam beberapa kasus, tetapi sadar, ini adalah pengaturan global untuk semua repositori git pada sistem Anda:
git config --global core.compression 0
Informasi penting
Anda harus terlebih dahulu menyusun manajer proyek Pasvulkan (yang belum lengkap) menggunakan CompileProjectManager (*NIX) atau CompileProjectManager.bat (Windows) sehingga Anda dapat menggunakan Manajer Proyek Pasvulkan sebagai alat baris perintah bernama ProjectManager (.exe).
Dan Anda memang membutuhkan versi Delphi terbaru atau versi SVN trunk terbaru dari kompiler freepascal (dan bukan hanya versi stabil dari kompiler freepascal), termasuk jalur yang benar di variabel lingkungan jalur Anda ke biner kompiler ini. Dan jika Anda juga ingin menggunakan target Android, hal yang sama berlaku untuk Android Studio, Java SDK, Android SDK dan Android NDK, bahwa ini harus diinstal di lokasi default mereka (seperti yang ditentukan Google atau menentukan lokasi default ini, tanpa pengecualian) dan harus ada dengan benar di variabel lingkungan sistem.
Dan untuk target Android Anda membutuhkan semua instalasi kompiler Cross Freepascal untuk semua dari target CPU yang didukung oleh Android resmi tanpa pengecualian, dan ini adalah: x86_32/i386, x86_64/AMD64, ARM32 dan AARCH64/ARM64
Cara membangun dan menjalankan proyek contoh
Setelah Anda menyusun biner ProjectManager, Anda perlu melakukan hal berikut:
| Melangkah | Windows | *nix | Keterangan |
|---|
| 1. | projectmanager compileassets examples | ./projectmanager compileassets examples | Itu mengkompilasi file aset |
| 2. | projectmanager build examples | ./projectmanager build examples | Itu mengkompilasi kode contoh itu sendiri |
| 3. | projectmanager run examples | ./projectmanager run examples | Itu memulai contoh biner |
Cara membuat proyek baru
Setelah Anda menyusun biner ProjectManager, Anda perlu melakukan hal berikut:
| Melangkah | Windows | *nix | Keterangan |
|---|
| 1. | projectmanager create [yourprojectname] | ./projectmanager create [yourprojectname] | Itu menciptakan proyek baru |
PENTING: Di mana nama proyek harus menjadi huruf kecil yang valid dan pengidentifikasi java dan bahkan nama file yang valid pada saat yang sama!
Untuk informasi lebih lanjut mengenai manajer proyek
Setelah Anda menyusun biner ProjectManager, cukup jalankan projectmanager -h di shell atau konsol Anda untuk output bantuan terperinci.
Fitur
- Header Vulkan C-API-Style (vulkan.pas yang dihasilkan oleh vkxml2pas.dpr)
- Selalu terkini, karena dihasilkan secara otomatis melalui vkxml2pas.dpr
- Platform yang Didukung:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64/AARCH64)
- Linux (x86-32, x86-64, lengan)
- Pembungkus Moltenvk (belum teruji)
- Kerangka kerja Vulkan berbasis OOP (pasvulkan.framework.pas)
- Abstraksi API Vulkan Berorientasi Objek
- Manajer memori berbasis-Black-Tree yang paling cocok untuk manajemen memori Vulkan, untuk mengelola sub-alokasi dalam buffer yang dialokasikan dan untuk menjaga jumlah total alokasi langsung secara simultan sebanyak mungkin dan kurang dari TVKphysicalDevicelimits.MaxMemoryAllocationcount.
- Tekstur loader dengan implementasi loader asli objekpascal sendiri, sehingga tidak tergantung pada loader gambar pihak ketiga eksternal, bahkan terlepas dari VCL, LCL dan FCL.
- BMP (belum teruji, tetapi seharusnya berhasil)
- DDS
- Hdr
- Ktx
- Jpg / jpeg (hanya baseline, hanya berkode huffman dan hanya ycrcb saat ini)
- PNG (semua jenis, termasuk PNG saluran 16-bit)
- TGA
- Fitur fungsi screenshot rantai swap
- termasuk Objectpascal-asli minimal PNG Writer Implementasi (termasuk minimal static-huffman hanya mengempiskan implementasi)
- termasuk implementasi penulis JPEG asli objekpascal sendiri
- Opsional Opsional Tekstur MIPMAP Tekstur Opsional (dengan bantuan VKCMDBlitImage)
- Objectpascal-asli Truetype/OpenType Font Loader Implementasi
- Dengan dukungan font openType-flavoured eksperimental (CFF Tipe 2)
- Dengan semi-kerja truetype-flavoured font mengisyaratkan interpreter kode byte sebagai opsi opsional
- Dengan Otomatis Otomatis Berkualitas Tinggi Berkualitas Tinggi Paralisasi Jarak Jarak Tertanda Generasi Lapangan (Berdasarkan Gagasan Implementasi dari Generasi Lapangan Jarak 2D Analitik Praktis dan dengan PMMP)
- Fitur Tekstur Vektor Font juga direncanakan untuk masa depan, untuk gabungan-field-field yang ditandatangani + vektor-tekstur hibrida rendering rendering implementasi teknologi, dependen oleh ukuran font dan sebagainya, di mana saluran rgb yang tidak akan dikeluarkan (ke non-indeks yang dikeluarkan (untuk-indeks yang dikeluarkan dengan list-list-list-list-list-list-list-list-list-list-list-list-list-list-list-list-list-list-list-list-list-list Bezier), dan saluran alfa Texel hanya akan menjadi bidang jarak 8-bit yang ditandatangani.
- Kelas Batch Sprite
- Atlas sprite
- Dengan konstruksi atlas sprite sprite cepat otomatis dengan pemangkasan/pemangkasan otomatis opsional, sehingga Anda tidak memerlukan alat generasi atlas sprite eksternal, namun, output dari alat TexturePacker juga didukung oleh Pasvulkan
- dan util dan barang-barang yang lebih bermanfaat untuk pemrograman vulkan
- Platform yang Didukung:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64/AARCH64)
- Linux (x86-32, x86-64, lengan)
- Pembungkus Moltenvk (belum teruji)
- Kerangka kerja aplikasi OOP-style Vulkan yang dioptimalkan (pasvulkan.application.pas pasvulkan.android.pas pasvulkan.sdl2.pas pasvulkan.starticlinking.pas)
- Desain keseluruhan dari kerangka kerja aplikasi yang dioptimalkan oleh Vulkan ini adalah campuran antara konsep desain VCL/LCL/FCl dan libgdx (dan beberapa ide desain saya sendiri, tentu saja).
- Itu menggunakan SDL 2.x sebagai OS-API Abstraction Layer API
- Single-window-only, jadi ini ramah-platform hingga maksimum, sejauh mungkin.
- Untuk aplikasi multi-window, Anda harus melakukan barang-barang Anda sendiri (misalnya, kerangka kerja sendiri atau menggunakan VCL/LCL dll.), Karena itu tidak fokus target dari kerangka aplikasi aplikasi yang dioptimalkan oleh Vulkan ini ini
- Pemulihan otomatis untuk:
- Vk_error_surface_lost_khr
- Vk_error_out_of_date_khr
- Vk_suboptimal_khr
- Tapi bukan untuk, misalnya, vk_error_device_lost, vk_error_out_of_device_memory atau vk_error_out_of_host_memory, karena itu adalah situasi penting, yang harus Anda tangani sendiri.
- Pembuatan dan Rekreasi Rantai Pertukaran Otomatis
- Pengurangan ulang abstraksi SDL2, untuk kasus yang mungkin terjadi di masa depan, ketika kerangka aplikasi yang dioptimalkan oleh Vulkan ini tidak akan menjadi SDL 2.0 yang mungkin terjadi lebih lanjut mengikuti platform target, Nintendo Switch sebagai contoh, atau ketika kerangka aplikasi yang telah dioptimalkan oleh Vulkan ini tidak akan ada lebih banyak SDL 2.0 yang didasarkan pada beberapa platform target yang sudah didukung.
- Platform yang Didukung:
- Windows (x86-32, x86-64)
- Android (x86-32, x86-64, ARM32, ARM64/AARCH64)
- Linux (x86-32, x86-64, lengan)
- Tapi belum ada moltenvk (karena SDL 2.x belum memiliki dukungan untuk itu, sejauh ini saya tahu)
Lisensi (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.
Pedoman Umum untuk Kontributor Kode
- Pastikan Anda diizinkan secara hukum untuk memberikan kontribusi di bawah lisensi Zlib.
- Header lisensi Zlib berada di bagian atas setiap file sumber, dengan pemberitahuan hak cipta yang sesuai.
- Pembungkus pasvulkan ini hanya dapat digunakan dengan header Pascal Vulan Pascal milik Pasvulkan.
- Setelah permintaan tarik, periksa status permintaan tarik Anda di https://github.com/bero1985/pasvulkan
- Tulis kode yang kompatibel dengan delphi> = 2009 dan freepascal> = 3.1.1
- Jangan gunakan perpustakaan/unit khusus Delphi-only, Freepascal, atau Lazarus saja, tetapi jika perlu, buatlah itu bisa di luar.
- Tidak ada penggunaan pustaka/unit pihak ketiga mungkin, tetapi jika perlu, buatlah ifdef-mampu.
- Cobalah menggunakan const bila memungkinkan.
- Pastikan untuk mengomentari Writeln, digunakan saat debugging.
- Pastikan kode dikompilasi pada platform 32-bit dan 64-bit (x86-32, x86-64, ARM, ARM64, dll.).
- Pastikan kode berjalan di semua platform dengan dukungan vulkan
Menampilkan video
Untuk video showcase terbaru, lihat daftar putar YouTube
Pasvulkan di Android 7.0 pada tablet NVIDIA SHIELD K1
Pasvulkan di NVIDIA GeForce GTX 970 di bawah Windows 10 Pro