LWJGL (https://www.lwjgl.org) เป็นไลบรารี Java ที่ช่วยให้สามารถเข้าถึงข้ามแพลตฟอร์มไปยัง API ดั้งเดิมยอดนิยมซึ่งมีประโยชน์ในการพัฒนาแอปพลิเคชันกราฟิก (OpenGL/Vulkan) เสียง (OpenAL) และการประมวลผลแบบขนาน (OpenCL) การเข้าถึงนี้เป็นไปโดยตรงและมีประสิทธิภาพสูง แต่ยังรวมอยู่ในเลเยอร์ที่ปลอดภัยต่อการพิมพ์และเป็นมิตรกับผู้ใช้ ซึ่งเหมาะสมกับระบบนิเวศของ Java
LWJGL เป็นเทคโนโลยีที่เปิดใช้งานและให้การเข้าถึงระดับต่ำ ไม่ใช่เฟรมเวิร์กและไม่ได้จัดเตรียมยูทิลิตี้ระดับที่สูงกว่าที่ไลบรารีดั้งเดิมเปิดเผย ด้วยเหตุนี้ โปรแกรมเมอร์มือใหม่จึงได้รับการสนับสนุนให้ลองใช้เฟรมเวิร์กหรือเอ็นจิ้นเกมตัวใดตัวหนึ่งที่ใช้ LWJGL ก่อนที่จะทำงานกับไลบรารีโดยตรง
LWJGL เป็นซอฟต์แวร์โอเพ่นซอร์สและใช้งานได้ฟรีโดยไม่มีค่าใช้จ่าย
ลิงค์ที่มีประโยชน์:
ติดต่อ:
หากคุณต้องการมีส่วนร่วม โปรดดูเอกสาร/README สำหรับภาพรวมโดยย่อของโครงสร้างโปรเจ็กต์ คำแนะนำในการติดตั้ง และตัวเลือกการกำหนดค่า
ในเวอร์ชัน 3.1.0
LWJGL ได้รับการแจกจ่ายเป็นชุดของโมดูล จำเป็นต้องใช้เฉพาะโมดูลหลักเท่านั้น และการผูกทั้งหมดเป็นทางเลือก (แต่การผูกบางส่วนขึ้นอยู่กับการผูกอื่นๆ) วิธีที่ง่ายที่สุดในการดาวน์โหลด LWJGL คือการใช้ตัวกำหนดค่าบิลด์บนเว็บไซต์
ตัวกำหนดค่าบิวด์จะสร้างการประกาศ Maven & Gradle ที่สามารถเพิ่มลงในโปรเจ็กต์ที่มีอยู่ได้ นี่เป็นวิธีที่ง่ายที่สุดในการใช้ LWJGL ในขณะที่พัฒนา
LWJGL ยังสามารถดาวน์โหลดเป็นชุดไฟล์ JAR แบบธรรมดาได้ แต่ละโมดูลประกอบด้วยไฟล์ต่อไปนี้:
ในการคอมไพล์และรันแอปพลิเคชัน LWJGL ควรเพิ่มไฟล์ฐานและไฟล์ JAR เนทิฟของโมดูลหลักและการเชื่อมโยงแต่ละรายการที่ใช้ลงใน classpath LWJGL แยกไฟล์เนทิฟไปยังโฟลเดอร์ชั่วคราวและโหลดโดยอัตโนมัติ ดังนั้นจึงไม่จำเป็นต้องกำหนดค่าเพิ่มเติม หากจำเป็นต้องมีการปรับแต่งเพิ่มเติม (เช่น เมื่อสร้างตัวติดตั้งเฉพาะแพลตฟอร์ม) ระบบอาจแตกไฟล์เนทิฟด้วยตนเองและโหลดผ่าน java.library.path
ดูคลาสการกำหนดค่าสำหรับตัวเลือกเพิ่มเติม
LWJGL 3 ต้องการ Java 8 หรือใหม่กว่าเพื่อสร้างและรัน และปัจจุบันรองรับแพลตฟอร์ม/สถาปัตยกรรมต่อไปนี้:
รหัสตัวอย่าง:
สำหรับการย้ายรหัส LWJGL 2 ไปยัง LWJGL 3 โปรดดูคู่มือการย้าย
ปัญหาทั่วไปส่วนใหญ่ที่ผู้ใช้ LWJGL เผชิญได้รับการแก้ไขเล็กน้อยดังนี้:
LWJGLX/debug คือ Java Agent ที่จะตรวจพบปัญหาเหล่านี้จำนวนมากโดยอัตโนมัติ นอกจากนี้ยังสามารถสร้างบันทึกการติดตามที่เป็นประโยชน์เมื่อรายงานปัญหาไปยัง LWJGL
เมื่อขอความช่วยเหลือหรือเมื่อคุณสงสัยว่ามีจุดบกพร่องใน LWJGL การจัดเตรียม MVCE (ตัวอย่างขั้นต่ำ สมบูรณ์ และตรวจสอบได้) ที่สร้างปัญหาขึ้นมาใหม่จะช่วยเพิ่มโอกาสในการตอบสนองที่รวดเร็วและมีประโยชน์
ห้องสมุด | คำอธิบาย |
---|---|
อีจีแอล | อินเทอร์เฟซระหว่าง API การเรนเดอร์ Khronos เช่น OpenGL ES หรือ OpenVG และระบบหน้าต่างแพลตฟอร์มเนทิฟพื้นฐาน |
KTX (พื้นผิวโครโนส) | คอนเทนเนอร์น้ำหนักเบาสำหรับพื้นผิวสำหรับ OpenGL®, Vulkan® และ GPU API อื่นๆ |
โอเพ่นซีแอล | มาตรฐานเปิดที่ไม่มีค่าลิขสิทธิ์สำหรับการเขียนโปรแกรมแบบขนานข้ามแพลตฟอร์มของโปรเซสเซอร์ที่หลากหลายที่พบในคอมพิวเตอร์ส่วนบุคคล เซิร์ฟเวอร์ อุปกรณ์มือถือ และแพลตฟอร์มแบบฝัง |
OpenGL | API กราฟิก 2D และ 3D ที่ใช้กันอย่างแพร่หลายมากที่สุดในอุตสาหกรรม นำแอปพลิเคชันหลายพันรายการมาสู่แพลตฟอร์มคอมพิวเตอร์ที่หลากหลาย |
OpenGL ES | API ข้ามแพลตฟอร์มที่ไม่มีค่าลิขสิทธิ์สำหรับกราฟิก 2D และ 3D เต็มรูปแบบบนระบบฝังตัว รวมถึงคอนโซล โทรศัพท์ เครื่องใช้ไฟฟ้า และยานพาหนะ |
OpenXR | มาตรฐานแบบเปิดที่ไม่มีค่าลิขสิทธิ์ที่ให้การเข้าถึงประสิทธิภาพสูงไปยัง Augmented Reality (AR) และ Virtual Reality (VR) หรือที่เรียกรวมกันว่า XR—แพลตฟอร์มและอุปกรณ์ |
วัลแคน | กราฟิกและ API การประมวลผลรุ่นใหม่ที่ให้การเข้าถึงข้ามแพลตฟอร์มที่มีประสิทธิภาพสูงสำหรับ GPU สมัยใหม่ที่ใช้ในอุปกรณ์หลากหลายประเภทตั้งแต่พีซีและคอนโซลไปจนถึงโทรศัพท์มือถือและแพลตฟอร์มแบบฝัง |
ห้องสมุด | คำอธิบาย |
---|---|
GLFW | สร้างหลายหน้าต่าง จัดการการป้อนข้อมูลของผู้ใช้ (คีย์บอร์ด เมาส์ อุปกรณ์ต่อพ่วงสำหรับเล่นเกม) และจัดการบริบท นอกจากนี้ยังมีการรองรับหลายจอภาพ การเข้าถึงคลิปบอร์ด การลากและวางไฟล์ และอื่นๆ อีกมากมาย |
จ่าวท์ | อินเทอร์เฟซดั้งเดิมของ AWT |
ขยายไดอะล็อกไฟล์ดั้งเดิม | ไลบรารี C ขนาดเล็กที่สามารถเรียกใช้ไดอะล็อกการเปิดไฟล์เนทีฟ การเลือกโฟลเดอร์ และบันทึกไฟล์แบบพกพาได้ |
จิ๋ว fd | ไลบรารีโต้ตอบดั้งเดิม |
ห้องสมุด | คำอธิบาย |
---|---|
เอฟเอ็มดี | โซลูชันแบบครบวงจรสำหรับการเพิ่มเสียงและดนตรีให้กับเกมใดๆ |
โอเพ่นอัล | API เสียง 3D ข้ามแพลตฟอร์มที่เหมาะสมสำหรับใช้กับแอปพลิเคชันเกมและแอปพลิเคชันเสียงประเภทอื่นๆ อีกมากมาย |
OpenAL ซอฟท์ | การใช้งานซอฟต์แวร์ข้ามแพลตฟอร์มที่ได้รับใบอนุญาต LGPL ของ OpenAL 3D audio API |
บทประพันธ์ | ตัวแปลงสัญญาณเสียงแบบเปิดที่ไม่มีค่าลิขสิทธิ์และมีความอเนกประสงค์สูง |
ห้องสมุด | คำอธิบาย |
---|---|
อัสซิมป์ | ไลบรารีโอเพ่นซอร์สแบบพกพาเพื่อนำเข้ารูปแบบโมเดล 3 มิติที่เป็นที่รู้จักต่างๆ ในลักษณะเดียวกัน |
บีจีเอฟเอ็กซ์ | API กราฟิกข้ามแพลตฟอร์มที่ไม่เชื่อเรื่องพระเจ้า ไลบรารีการเรนเดอร์สไตล์ “Bring Your Own Engine/Framework” ได้รับอนุญาตภายใต้ใบอนุญาตโอเพ่นซอร์ส BSD-2 clause ที่อนุญาต |
ฟรีไทป์ | ไลบรารีซอฟต์แวร์ที่มีให้ใช้งานฟรีเพื่อเรนเดอร์แบบอักษร |
ฮาร์ฟบัซ | ไลบรารีการสร้างข้อความที่ช่วยให้โปรแกรมแปลงลำดับอินพุต Unicode ให้เป็นเอาท์พุตสัญลักษณ์ที่มีการจัดรูปแบบและตำแหน่งอย่างเหมาะสม สำหรับระบบการเขียนและภาษาใดๆ |
เมชอปติไมเซอร์ | ไลบรารีการเพิ่มประสิทธิภาพ mesh ที่ทำให้ mesh เล็กลงและเรนเดอร์ได้เร็วขึ้น |
msdfgen | เครื่องกำเนิดสนามระยะทางแบบหลายช่องสัญญาณ |
NanoSVG | ตัวแยกวิเคราะห์ SVG โง่ ๆ ที่เรียบง่าย |
นาโนวีจี | ไลบรารีการเรนเดอร์กราฟิกเวกเตอร์แบบลดรอยหยักขนาดเล็กสำหรับ OpenGL |
นิวเคลียร์ | ชุดเครื่องมืออินเทอร์เฟซผู้ใช้แบบกราฟิกในโหมดทันทีขั้นต่ำที่เขียนด้วย ANSI C และได้รับอนุญาตภายใต้โดเมนสาธารณะ |
par_octasphere | สร้างตาข่ายสามเหลี่ยมสำหรับทรงกลม กล่องกลม และแคปซูล |
par_shapes | สร้างพื้นผิวแบบพาราเมตริกและรูปทรงง่ายๆ อื่นๆ |
par_streamlines | สามเหลี่ยมเส้นกว้างและเส้นโค้ง |
ชาเดอร์ก | คอลเลกชันของไลบรารีสำหรับการรวบรวมเชเดอร์ |
SPIRV-ครอส | ไลบรารีสำหรับดำเนินการสะท้อนบน SPIR-V และการแยกส่วน SPIR-V กลับไปสู่ภาษาระดับสูง |
OpenEXR จิ๋ว | ไลบรารีส่วนหัวเดียวขนาดเล็กสำหรับโหลดและบันทึกอิมเมจ OpenEXR(.exr) |
ทูเทิล (AMD) | ไลบรารีการเพิ่มประสิทธิภาพตาข่ายสามเหลี่ยม 3 มิติที่ปรับปรุงเทคนิคการประมวลผลล่วงหน้าของตาข่ายที่มีอยู่ |
ตัวจัดสรรหน่วยความจำวัลแคน | ง่ายต่อการรวมไลบรารีการจัดสรรหน่วยความจำ Vulkan |
โยคะ | ไลบรารีโครงร่างแบบโอเพ่นซอร์สและข้ามแพลตฟอร์มที่ใช้ Flexbox |
ห้องสมุด | คำอธิบาย |
---|---|
LibOVR | API ของ Oculus SDK |
โอเพนวีอาร์ | API และรันไทม์ที่อนุญาตให้เข้าถึงฮาร์ดแวร์ VR จากผู้จำหน่ายหลายราย โดยไม่จำเป็นต้องให้แอปพลิเคชันมีความรู้เฉพาะเกี่ยวกับฮาร์ดแวร์ที่เป็นเป้าหมาย |
ห้องสมุด | คำอธิบาย |
---|---|
stb_easy_font | ฟอนต์บิตแมปที่ใช้งานง่ายและรวดเร็วสำหรับการพิมพ์อัตราเฟรม ฯลฯ |
stb_image | การโหลด/ถอดรหัสรูปภาพจากไฟล์/หน่วยความจำ: JPG, PNG, TGA, BMP, PSD, GIF, HDR, PIC |
stb_image_resize | ปรับขนาดรูปภาพให้ใหญ่ขึ้น/เล็กลงด้วยคุณภาพที่ดี |
stb_image_write | การเขียนภาพลงดิสก์: PNG, TGA, BMP |
stb_perlin | แก้ไขเสียง Perlin (อินพุต 3D, เอาต์พุต 1D) |
stb_rect_pack | เครื่องบรรจุสี่เหลี่ยม 2D แบบเรียบง่ายพร้อมคุณภาพที่ดี |
stb_truetype | แยกวิเคราะห์ ถอดรหัส และแปลงอักขระจากแบบอักษร Truetype |
stb_vorbis | ถอดรหัสไฟล์ ogg vorbis จากไฟล์/หน่วยความจำเป็นเอาต์พุตแบบลอยตัว/16 บิต |
ห้องสมุด | คำอธิบาย |
---|---|
CUDA | แพลตฟอร์มการประมวลผลแบบขนานและโมเดลการเขียนโปรแกรมที่พัฒนาโดย NVIDIA สำหรับการประมวลผลทั่วไปบน GPU |
ฮวล็อค | นามธรรมแบบพกพาของโทโพโลยีแบบลำดับชั้นของสถาปัตยกรรมสมัยใหม่ รวมถึงโหนดหน่วยความจำ NUMA ซ็อกเก็ต แคชที่ใช้ร่วมกัน คอร์ และมัลติเธรดพร้อมกัน |
เจมัลลอค | การใช้งาน malloc สำหรับวัตถุประสงค์ทั่วไปที่เน้นการหลีกเลี่ยงการกระจายตัวและการสนับสนุนการทำงานพร้อมกันที่ปรับขนาดได้ |
libffi | อินเทอร์เฟซการเขียนโปรแกรมระดับสูงแบบพกพาสำหรับรูปแบบการโทรต่างๆ |
แบ่งแยกเพศ | ไลบรารีที่แทนที่จำนวนเต็มราคาแพงหารด้วยการคูณและบิตชิฟต์ที่ถูกเมื่อเปรียบเทียบ |
LLVM | คอลเลกชันของเทคโนโลยีคอมไพเลอร์และทูลเชนแบบโมดูลาร์และนำมาใช้ซ้ำได้ |
แอลเอ็มดีบี | ฐานข้อมูลที่รวดเร็วและประหยัดหน่วยความจำเป็นพิเศษ ด้วยไฟล์ที่แมปหน่วยความจำ จะมีประสิทธิภาพการอ่านของฐานข้อมูลในหน่วยความจำล้วนๆ ในขณะที่ยังคงรักษาความคงอยู่ของฐานข้อมูลบนดิสก์มาตรฐาน |
LZ4 | อัลกอริธึมการบีบอัดข้อมูลแบบไม่สูญเสียข้อมูลที่เน้นไปที่ความเร็วการบีบอัดและคลายการบีบอัด |
เหมียวแฮช | แฮชที่ไม่ใช่การเข้ารหัสที่รวดเร็วมาก |
โอดีบีซี | อินเทอร์เฟซภาษาโปรแกรม AC ที่ทำให้แอปพลิเคชันสามารถเข้าถึงข้อมูลจากระบบการจัดการฐานข้อมูล (DBMS) ที่หลากหลาย |
รีโมท | ตัวสร้างโปรไฟล์ CPU/GPU แบบเรียลไทม์ที่โฮสต์ในไฟล์ C เดียวพร้อมตัวแสดงที่ทำงานบนเว็บเบราว์เซอร์ |
rpmalloc | โดเมนสาธารณะข้ามแพลตฟอร์มล็อคเธรดแคชฟรีตัวจัดสรรหน่วยความจำ 16 ไบต์ที่ปรับใช้ใน C |
xxHash | อัลกอริธึมแฮชที่เร็วมาก ทำงานที่ขีดจำกัดความเร็ว RAM |
ซมาตรฐาน (zstd) | อัลกอริธึมการบีบอัดแบบไม่สูญเสียข้อมูลที่รวดเร็ว กำหนดเป้าหมายสถานการณ์การบีบอัดแบบเรียลไทม์ที่ระดับ zlib และอัตราส่วนการบีบอัดที่ดีขึ้น |
การใช้ข้อผูกมัดจะอยู่ภายใต้เงื่อนไขของใบอนุญาตที่เกี่ยวข้อง
LWJGL เกิดขึ้นได้เพราะทุกคนที่มีส่วนร่วมและบริจาคให้กับกลุ่มของเรา