LWJGL (https://www.lwjgl.org) adalah perpustakaan Java yang memungkinkan akses lintas platform ke API asli populer yang berguna dalam pengembangan aplikasi grafis (OpenGL/Vulkan), audio (OpenAL) dan komputasi paralel (OpenCL). Akses ini bersifat langsung dan berkinerja tinggi, namun juga dibungkus dalam lapisan yang aman untuk digunakan dan mudah digunakan, sesuai untuk ekosistem Java.
LWJGL adalah teknologi yang memungkinkan dan menyediakan akses tingkat rendah. Ini bukan kerangka kerja dan tidak menyediakan utilitas tingkat lebih tinggi daripada yang diekspos oleh perpustakaan asli. Oleh karena itu, pemrogram pemula dianjurkan untuk mencoba salah satu kerangka kerja atau mesin permainan yang menggunakan LWJGL, sebelum bekerja langsung dengan perpustakaan.
LWJGL adalah perangkat lunak sumber terbuka dan tersedia secara bebas tanpa biaya.
Tautan yang berguna:
Kontak:
Jika Anda ingin berkontribusi, lihat doc/README untuk gambaran singkat tentang struktur proyek, petunjuk instalasi dan opsi konfigurasi.
Pada versi 3.1.0
, LWJGL didistribusikan sebagai satu set modul. Hanya modul inti yang diperlukan dan semua pengikatan bersifat opsional (tetapi beberapa pengikatan bergantung pada pengikatan lainnya). Cara termudah untuk mengunduh LWJGL adalah dengan menggunakan konfigurator build di situs web.
Konfigurator build menghasilkan deklarasi Maven & Gradle yang dapat ditambahkan ke proyek yang sudah ada. Ini adalah cara termudah untuk menggunakan LWJGL saat mengembangkan.
LWJGL juga dapat diunduh sebagai kumpulan file JAR sederhana. Setiap modul terdiri dari file-file berikut:
Untuk mengkompilasi dan menjalankan aplikasi LWJGL, file JAR dasar dan asli dari modul inti dan setiap pengikatan yang digunakan harus ditambahkan ke classpath. LWJGL mengekstrak penduduk asli ke folder sementara dan memuatnya secara otomatis, sehingga tidak diperlukan konfigurasi lebih lanjut. Jika diperlukan lebih banyak penyesuaian (misalnya saat membuat penginstal khusus platform), versi asli dapat diekstraksi secara manual dan dimuat melalui java.library.path
. Lihat kelas Konfigurasi untuk opsi lebih lanjut.
LWJGL 3 memerlukan Java 8 atau lebih baru untuk membangun dan menjalankan dan saat ini mendukung platform/arsitektur berikut:
Contoh kode:
Untuk memigrasikan kode LWJGL 2 ke LWJGL 3, lihat Panduan Migrasi.
Masalah paling umum yang dihadapi oleh pengguna LWJGL dapat diatasi dengan hal berikut:
LWJGLX/debug adalah Agen Java yang secara otomatis akan mendeteksi banyak masalah ini. Itu juga dapat menghasilkan log jejak yang berguna saat melaporkan masalah ke LWJGL.
Saat meminta bantuan atau saat Anda mencurigai adanya bug di LWJGL, menyiapkan MVCE (Contoh Minimal, Lengkap, dan Dapat Diverifikasi) yang mereproduksi masalah akan meningkatkan peluang respons yang cepat dan berguna.
Perpustakaan | Keterangan |
---|---|
EG | Antarmuka antara API rendering Khronos seperti OpenGL ES atau OpenVG dan sistem jendela platform asli yang mendasarinya. |
KTX (Tekstur Khronos) | Wadah ringan untuk tekstur untuk OpenGL®, Vulkan®, dan API GPU lainnya. |
OpenCL | Standar terbuka dan bebas royalti untuk pemrograman paralel lintas platform dari beragam prosesor yang ditemukan di komputer pribadi, server, perangkat seluler, dan platform tertanam. |
OpenGL | API grafis 2D dan 3D yang paling banyak diadopsi di industri, menghadirkan ribuan aplikasi ke berbagai platform komputer. |
OpenGL ES | API lintas platform bebas royalti untuk grafik 2D dan 3D yang berfungsi penuh pada sistem tertanam - termasuk konsol, telepon, peralatan, dan kendaraan. |
BukaXR | Standar terbuka bebas royalti yang menyediakan akses berkinerja tinggi ke platform dan perangkat Augmented Reality (AR) dan Virtual Reality (VR)—yang secara kolektif dikenal sebagai XR. |
Vulkan | API grafis dan komputasi generasi baru yang menyediakan akses lintas platform berefisiensi tinggi ke GPU modern yang digunakan di berbagai perangkat mulai dari PC dan konsol hingga ponsel dan platform tertanam. |
Perpustakaan | Keterangan |
---|---|
GLFW | Buat banyak jendela, tangani input pengguna (keyboard, mouse, periferal game) dan kelola konteks. Juga dilengkapi dukungan multi-monitor, akses clipboard, drag-n-drop file, dan masih banyak lagi. |
JAWT | Antarmuka asli AWT. |
Dialog File Asli Diperluas | Pustaka C kecil yang mudah memanggil dialog pembukaan file asli, pemilihan folder, dan penyimpanan file. |
tinyfd | Perpustakaan dialog asli. |
Perpustakaan | Keterangan |
---|---|
FMOD | Solusi menyeluruh untuk menambahkan suara dan musik ke game apa pun. |
TerbukaAL | API audio 3D lintas platform yang sesuai untuk digunakan dengan aplikasi game dan banyak jenis aplikasi audio lainnya. |
OpenAL Lembut | Implementasi perangkat lunak lintas platform berlisensi LGPL dari API audio 3D OpenAL. |
Karya | Codec audio yang benar-benar terbuka, bebas royalti, dan sangat serbaguna. |
Perpustakaan | Keterangan |
---|---|
Asim | Pustaka Open Source portabel untuk mengimpor berbagai format model 3D terkenal secara seragam. |
bgfx | Lintas platform, API grafis agnostik, pustaka rendering gaya “Bawa Mesin/Kerangka Anda Sendiri”, dilisensikan di bawah lisensi sumber terbuka klausa BSD-2 yang permisif. |
Tipe Bebas | Perpustakaan perangkat lunak yang tersedia secara gratis untuk merender font. |
HarfBuzz | Pustaka pembentuk teks yang memungkinkan program mengubah urutan masukan Unicode menjadi keluaran mesin terbang yang diformat dan diposisikan dengan benar — untuk sistem penulisan dan bahasa apa pun. |
meshoptimizer | Pustaka pengoptimalan mesh yang membuat mesh lebih kecil dan lebih cepat dirender. |
msdfgen | Generator bidang jarak bertanda tangan multi-saluran. |
NanoSVG | Parser SVG bodoh yang sederhana. |
NanoVG | Pustaka rendering grafik vektor antialias kecil untuk OpenGL. |
nuklir | Toolkit antarmuka pengguna grafis mode langsung keadaan minimal yang ditulis dalam ANSI C dan dilisensikan di bawah domain publik. |
par_oktasfer | Menghasilkan jerat segitiga untuk bola, kotak bulat, dan kapsul. |
par_shapes | Hasilkan permukaan parametrik dan bentuk sederhana lainnya. |
par_streamlines | Lakukan triangulasi garis dan kurva lebar. |
Shaderc | Kumpulan perpustakaan untuk kompilasi shader. |
SPIRV-Salib | Perpustakaan untuk melakukan refleksi pada SPIR-V dan membongkar SPIR-V kembali ke bahasa tingkat tinggi. |
OpenEXR kecil | Pustaka kecil khusus header tunggal untuk memuat dan menyimpan gambar OpenEXR(.exr). |
Tootle (AMD) | Pustaka pengoptimalan mesh segitiga 3D yang meningkatkan teknik pra-pemrosesan mesh yang ada. |
Pengalokasi Memori Vulkan | Pustaka alokasi memori Vulkan yang mudah diintegrasikan. |
Yoga | Pustaka tata letak lintas platform sumber terbuka yang mengimplementasikan Flexbox. |
Perpustakaan | Keterangan |
---|---|
LibOVR | API dari Oculus SDK. |
OpenVR | API dan runtime yang memungkinkan akses ke perangkat keras VR dari beberapa vendor tanpa mengharuskan aplikasi memiliki pengetahuan khusus tentang perangkat keras yang ditargetkan. |
Perpustakaan | Keterangan |
---|---|
stb_easy_font | Font bitmap yang cepat dan mudah digunakan untuk mencetak kecepatan bingkai, dll. |
stb_image | Memuat/menguraikan gambar dari file/memori: JPG, PNG, TGA, BMP, PSD, GIF, HDR, PIC |
stb_image_resize | Ubah ukuran gambar lebih besar/kecil dengan kualitas bagus. |
stb_image_write | Penulisan gambar ke disk: PNG, TGA, BMP |
stb_perlin | Kebisingan Perlin yang direvisi (input 3D, output 1D). |
stb_rect_pack | Pengemas persegi panjang 2D sederhana dengan kualitas yang layak. |
stb_truetype | Parsing, decode, dan rasterisasi karakter dari font truetype. |
stb_vorbis | Dekode file ogg vorbis dari file/memori ke output bertanda float/16-bit. |
Perpustakaan | Keterangan |
---|---|
CUDA | Platform komputasi paralel dan model pemrograman yang dikembangkan oleh NVIDIA untuk komputasi umum pada GPU. |
hwloc | Abstraksi portabel dari topologi hierarki arsitektur modern, termasuk node memori NUMA, soket, cache bersama, inti, dan multithreading simultan. |
jemaloc | Implementasi malloc tujuan umum yang menekankan penghindaran fragmentasi dan dukungan konkurensi yang dapat diskalakan. |
libffi | Antarmuka pemrograman tingkat tinggi yang portabel untuk berbagai konvensi panggilan. |
libdivide | Perpustakaan yang menggantikan pembagian integer yang mahal dengan perkalian dan bitshift yang relatif murah. |
LLVM | Kumpulan teknologi compiler dan toolchain yang modular dan dapat digunakan kembali. |
LMDB | Basis data yang luar biasa cepat dan hemat memori. Dengan file yang dipetakan memori, ia memiliki kinerja baca database dalam memori murni sambil mempertahankan persistensi database berbasis disk standar. |
LZ4 | Algoritma kompresi data lossless yang berfokus pada kecepatan kompresi dan dekompresi. |
Meong hash | Hash non-kriptografi yang sangat cepat. |
ODBC | Antarmuka bahasa pemrograman AC yang memungkinkan aplikasi mengakses data dari berbagai sistem manajemen basis data (DBMS). |
Jarak jauh | Profiler CPU/GPU waktu nyata yang dihosting dalam satu file C dengan penampil yang berjalan di browser web. |
rpmalloc | Thread caching bebas kunci lintas platform domain publik, pengalokasi memori selaras 16-byte yang diterapkan di C. |
xxHash | Algoritme Hash yang sangat cepat, berjalan pada batas kecepatan RAM. |
Zstandar (zstd) | Algoritma kompresi lossless yang cepat, menargetkan skenario kompresi real-time pada tingkat zlib dan rasio kompresi yang lebih baik. |
Penggunaan pengikatan tunduk pada ketentuan lisensi terkait.
LWJGL ada berkat semua orang yang berkontribusi dan berdonasi untuk kolektif kami.