อ่าน 3 นาที
แอลดับบลิวเจจีแอล
Lightweight Java Game Library ( LWJGL ) เป็น ไลบรารี ซอฟต์แวร์โอเพนซอร์ส ที่ให้ การเชื่อมต่อ กับไลบรารี C ต่างๆสำหรับ นักพัฒนาวิดีโอเกม ไปยัง ภาษา Java โดยเปิดเผย ไลบรารี...
แอลดับบลิวเจจีแอล
| ไลบรารีเกม Java น้ำหนักเบา (LWJGL) | |
|---|---|
| ผู้เขียนต้นฉบับ | เจ้าชายแห่งทะเลแคสเปียน |
| นักพัฒนา | โยอันนิส ซัคปินิส |
| ปล่อย | 4 กุมภาพันธ์ พ.ศ. 2550 [ 1 ] |
| เวอร์ชันเสถียร | 3.4.1 / 3 กุมภาพันธ์ 2026 |
| เขียนเป็น | Java , C , Kotlin [ 2 ] [ 3 ] |
| ระบบปฏิบัติการ | ลินุกซ์ , มอสซาเรลล่า , วินโดวส์ , ฟรีบีเอสดี |
| แพลตฟอร์ม | แพลตฟอร์ม Java |
| พิมพ์ | ห้องสมุดคอมพิวเตอร์ฟรี |
| ใบอนุญาต | BSDบางส่วนผูกอยู่ภายใต้ใบอนุญาตที่แตกต่างกัน[ 2 ] |
| เว็บไซต์ | lwjgl |
| ที่เก็บข้อมูล | github.com/lwjgl |
Lightweight Java Game Library ( LWJGL ) เป็นไลบรารีซอฟต์แวร์โอเพนซอร์สที่ให้การเชื่อมต่อ กับไลบรารี Cต่างๆสำหรับนักพัฒนาวิดีโอเกมไปยังภาษา Javaโดยเปิดเผย ไลบรารี ข้ามแพลตฟอร์ม ที่ใช้กันทั่วไปในการ พัฒนา วิดีโอเกมและสื่อมัลติมีเดีย เช่นVulkan , OpenGL , GLFW , OpenALและOpenCL
เป้าหมายหลักของโครงการคือการจัดหาวิธีการให้นักพัฒนา Java สามารถเข้าถึงทรัพยากรที่ไม่สามารถใช้งานได้หรือใช้งานได้ไม่ดีบนแพลตฟอร์ม Java ที่มีอยู่ ปรัชญาหลักคือการเปิดเผยเทคโนโลยีพื้นฐานในรูปแบบ wrapper บาง ๆ จึงสร้างAPI ที่ใกล้เคียงกับต้นฉบับ LWJGL เป็นพื้นฐานของเอนจิ้ นเกมและไลบรารี Java ระดับสูงบางตัว เช่นlibGDX [ 4 ]และjMonkeyEngine [ 5 ]
ประวัติศาสตร์
การพัฒนาไลบรารีเริ่มต้นในปี 2545 พร้อมกับการเปิดตัวJ2SE 1.4โดยใช้ประโยชน์จากการดำเนินการ I/O แบบไม่บล็อกที่ เพิ่มเข้ามาใหม่ และ การเข้าถึง หน่วยความจำนอกฮีปการเพิ่มเติมเหล่านี้ในJDKช่วยให้สามารถเข้าถึงหน่วยความจำเนทีฟและไลบรารีที่ไม่ใช่ส่วนหนึ่งของ JDK ได้ดียิ่งขึ้น การเปิดตัวไลบรารีอย่างเป็นทางการครั้งแรกเกิดขึ้นเมื่อวันที่ 4 กุมภาพันธ์ 2550 [ 1 ]
เมื่อวันที่ 13 พฤศจิกายน 2014 ได้มีการประกาศเวอร์ชัน 3 ซึ่งได้ปล่อยเวอร์ชันอัลฟ่าเมื่อวันที่ 27 เมษายน 2015 และเป็นการเขียน LWJGL ใหม่ทั้งหมด[ 6 ] [ 7 ] [ 8 ]เวอร์ชัน 3 เพิ่มการรองรับVulkanและการเชื่อมต่อใหม่หลายรายการ รวมถึงGLFW , EGLและObjective-C [ 8 ] [ 9 ] นอกจาก นี้ยังเพิ่ม การรองรับการ พัฒนา Oculus Riftด้วยการเชื่อมต่อ LibOVR [ 8 ]เวอร์ชันใหม่นี้ได้รับการเผยแพร่เมื่อวันที่ 4 มิถุนายน 2016 หลังจากใช้เวลาในการพัฒนามากกว่า 3 ปีครึ่ง[ 10 ]
การผูกมัด
ไลบรารีเข้าถึงโค้ดC ดั้งเดิมผ่านทาง Java Native Interface (JNI) การผูกกับไลบรารีดั้งเดิมแต่ละตัวมีอยู่เป็นโมดูลที่แตกต่างกัน ดังนั้นนักพัฒนาจึงสามารถสร้างแบบกำหนดเองได้โดยมีเฉพาะสิ่งที่พวกเขาต้องการในโปรแกรมใดโปรแกรมหนึ่งเท่านั้น[ 8 ] [ 11 ] [ 2 ]
ในขณะที่คลาสยูทิลิตี้เขียนด้วยภาษา Java บริสุทธิ์ คลาสการผูกส่วนใหญ่จะถูกสร้างขึ้นโดยอัตโนมัติโดยตัวสร้างแบบกำหนดเองที่เขียนด้วยKotlin [ 2 ] [ 3 ]
ตั้งแต่เวอร์ชัน 3.1 LWJGL ได้ถูกแบ่งออกเป็น 51 โมดูลอย่างสมบูรณ์ ซึ่งสามารถดาวน์โหลดและใช้งานแยกกันได้ เพื่อให้กระบวนการนี้ง่ายขึ้น โครงการจึงมีตัวกำหนดค่าการสร้างออนไลน์ ซึ่งช่วยให้ผู้ใช้สามารถดาวน์โหลดชุดโมดูลที่กำหนดเองได้ และสร้าง ไฟล์การกำหนดค่า MavenและGradle โดยอัตโนมัติ เพื่อให้ใช้งานกับโครงการที่มีอยู่ได้ง่ายขึ้น[ 12 ] [ 13 ]
| ผูกพัน | หมวดหมู่ | คำอธิบาย | หมายเหตุ |
|---|---|---|---|
| อีจีแอล | API ของ Khronos | ส่วนเชื่อมต่อระหว่าง API การเรนเดอร์ของ Khronos และระบบหน้าต่างพื้นฐานของแพลตฟอร์ม | |
| โอเพ่นซีแอล | API สำหรับการประมวลผลแบบขนาน ข้ามแพลตฟอร์ม | ||
| โอเพ่นจีแอล | ข้อกำหนดกราฟิก 3 มิติที่ผู้ผลิต GPU ส่วนใหญ่ใช้ | ส่วนขยายส่วนใหญ่ได้รับการสนับสนุน แต่ส่วนขยายที่ไม่ค่อยได้รับความนิยมจะถูกเพิ่มเข้ามาตามคำขอ | |
| โอเพนกลู อีเอส | OpenGL สำหรับระบบฝังตัวเช่น โทรศัพท์มือถือ แท็บเล็ต หรือเครื่องเล่นเกม | ||
| วัลคาน | API กราฟิก 3 มิติแบบข้ามแพลตฟอร์มที่จะเปิดตัวในเร็วๆ นี้ | ||
| จีแอลเอฟวี | การแสดงผลและการป้อนข้อมูล | จำเป็นต้องใช้ไลบรารีการจัดการหน้าต่างเพื่อจัดการบริบท OpenGL และ Vulkan รวมถึงการรับข้อมูลจากผู้ใช้ | |
| JAWT | อินเทอร์เฟซดั้งเดิม ของ AWT | ||
| เอ็นเอฟดี | ไลบรารีขนาดเล็กสำหรับสร้างกล่องโต้ตอบไฟล์แบบเนทีฟที่ใช้งานได้บนหลายแพลตฟอร์ม | ||
| ไทนี่เอฟดี | ไลบรารีบทสนทนาพื้นฐานขนาดเล็ก | ||
| โอเพ่นเอแอล | เสียง | API เสียงสามมิติ | ALC และส่วนขยายอื่นๆ ได้รับการสนับสนุน โดยเฉพาะอย่างยิ่งมีการรวมการใช้งาน OpenAL Soft ไว้ด้วย |
| โอปุส | ตัว แปลง สัญญาณเสียงแบบเปิด ไม่เสียค่าลิขสิทธิ์ | ||
| แอสซิมป์ | กราฟิก | ไลบรารีโอเพนซอร์สแบบพกพาสำหรับนำเข้าโมเดล 3 มิติ ใน รูปแบบ ต่างๆ | |
| บจีเอฟเอ็กซ์ | ไลบรารีการเรนเดอร์ข้ามแพลตฟอร์มที่รองรับแบ็กเอนด์กราฟิกหลายประเภท | ||
| ดริฟท์เอฟเอ็กซ์ | ไลบรารีสำหรับแสดงผลเนื้อหา OpenGL ลงในโหนด JavaFX | ||
| ลิบโอวีอาร์ | API ของOculus Rift SDK | ||
| meshoptimizer | ไลบรารีสำหรับการปรับแต่งโมเดล 3 มิติ เพื่อลดขนาดโมเดล 3 มิติและเรนเดอร์ได้เร็วขึ้น | ||
| นาโนเอสวีจี | โปรแกรมแยกวิเคราะห์ ไฟล์ SVGอย่างง่าย | ||
| นาโนวีจี | ไลบรารีสำหรับการเรนเดอร์กราฟิกเวกเตอร์ 2 มิติโดยใช้ OpenGL | ||
| นิวเคลียร์ | ไลบรารี GUIอย่างง่าย | ||
| รูปทรงพาร์ | ตัวสร้างรูปทรงพาราเมตริกและรูปทรงพื้นฐานอื่นๆ | ||
| พาร์สตรีมไลน์ | ใช้การหาค่าสามเหลี่ยมกับเส้นและส่วนโค้งกว้างๆ | ||
| โอเพ่นวีอาร์ | แพลตฟอร์ม API ที่ช่วยให้สามารถเข้าถึงฮาร์ดแวร์ VR จากผู้ผลิตหลายรายได้ โดยไม่จำเป็นต้องให้แอปพลิเคชันมีความรู้เฉพาะเจาะจงเกี่ยวกับประเภทของฮาร์ดแวร์ที่ต้องการใช้งาน | ||
| เชเดอร์ค | ชุดไลบรารีสำหรับการคอม ไพล์เชเด อร์ | ||
| สปิร์ฟ-ครอส | ไลบรารีสำหรับทำการวิเคราะห์ข้อมูลในSPIR-Vและถอดรหัส SPIR-V กลับไปเป็นภาษาโปรแกรมระดับสูง | ||
| เปิดEXR | ไลบรารีขนาดเล็กที่มีไฟล์เฮดเดอร์เดียวสำหรับโหลดและบันทึกภาพ OpenEXR (.exr) | ||
| ทูทเทิล (เอเอ็มดี) | ไลบรารีสำหรับการปรับแต่งตาข่ายสามเหลี่ยม 3 มิติ ที่พัฒนาต่อยอดจากเทคนิคการประมวลผลล่วงหน้าของตาข่ายที่มีอยู่เดิม | ||
| ตัวจัดสรรหน่วยความจำ Vulkan | ไลบรารีสำหรับการจัดสรรหน่วยความจำ Vulkan ที่ง่ายต่อการผสานรวม | ||
| โยคะ | ไลบรารีจัดวางเลย์เอาต์แบบโอเพนซอร์สที่ใช้งานได้บนหลายแพลตฟอร์ม ซึ่งใช้ CSS Flexbox | ||
| สต. | สต. | ไลบรารีไฟล์เดียวขนาดเล็กสำหรับโหลดรูปภาพ เสียง และฟอนต์ | |
| ฟิสิกส์กระสุน | อื่น | การตรวจจับการชนแบบเรียลไทม์และการจำลองทางฟิสิกส์หลายมิติสำหรับ VR, เกม, เอฟเฟกต์ภาพ, หุ่นยนต์, การเรียนรู้ของเครื่องจักร ฯลฯ | |
| คูดา | แพลตฟอร์มการประมวลผลแบบขนานและโมเดลการเขียนโปรแกรมที่พัฒนาโดยNVIDIAสำหรับการประมวลผลทั่วไปบน GPU | ||
| ไดน์คอล | ไลบรารีสำหรับเรียกใช้ฟังก์ชัน C แบบไดนามิกในรูปแบบที่ใช้งานได้กับหลายแพลตฟอร์ม | เตรียมลบออก | |
| เจมัลล็อก | การจัดการหน่วยความจำระดับต่ำ | ||
| libffi | อินเทอร์เฟซการเขียนโปรแกรมระดับสูงแบบพกพาสำหรับรูปแบบการเรียกใช้ฟังก์ชันต่างๆ | ใช้แทน dyncall | |
| ลิบดิไวด์ | ไลบรารีที่แทนที่การหารจำนวนเต็มที่ใช้ต้นทุนสูงด้วยการคูณและการเลื่อนบิตที่มีต้นทุนต่ำกว่า | ||
| LLVM | ชุดของเทคโนโลยีคอมไพเลอร์และชุดเครื่องมือที่สามารถปรับแต่งและนำกลับมาใช้ใหม่ได้ | ||
| LMDB | ไลบรารีฐานข้อมูลความเร็วสูงที่ใช้ไฟล์ แบบแมปหน่วยความจำ | ||
| แอลซี4 | อัลกอริทึม การบีบอัดข้อมูลแบบไม่สูญเสียคุณภาพที่เน้นความเร็ว | ||
| เหมียวแฮช | แฮ ช แบบรวดเร็วที่ไม่ใช้การเข้ารหัส | ||
| โอดีบีซี | อินเทอร์เฟซภาษาซีที่ช่วยให้แอปพลิเคชันสามารถเข้าถึงข้อมูลจากระบบจัดการฐานข้อมูลที่หลากหลายได้ | ||
| รีโมทรี่ | โปรแกรมวิเคราะห์ประสิทธิภาพ CPU/GPU แบบเรียลไทม์ | ||
| rpmalloc | ตัวจัดสรรหน่วยความจำแคชเธรดแบบข้ามแพลตฟอร์ม | ||
| xxแฮช | แฮชที่รวดเร็วโดยไม่ใช้การเข้ารหัส | ||
| Zstandard | อัลกอริทึมการบีบอัดข้อมูลแบบไม่สูญเสียข้อมูลที่รวดเร็ว |
การใช้งานที่น่าสนใจ
- Minecraft: Java Edition [ 14 ] [ 15 ]
- โครงการซอมบอยด์[ 14 ] [ 16 ]
- อัศวินเกลียว[ 14 ]
- ภาคดาว[ 14 ]
ลิงก์ภายนอก
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ แอลดับบลิวเจจีแอล
Lightweight Java Game Library ( LWJGL ) เป็น ไลบรารี ซอฟต์แวร์โอเพนซอร์ส ที่ให้ การเชื่อมต่อ กับไลบรารี C ต่างๆสำหรับ นักพัฒนาวิดีโอเกม ไปยัง ภาษา Java โดยเปิดเผย ไลบรารี...
ประวัติศาสตร์
การพัฒนาไลบรารีเริ่มต้นในปี 2545 พร้อมกับการเปิดตัว J2SE 1.4 โดยใช้ประโยชน์จาก การดำเนินการ I/O แบบไม่บล็อกที่ เพิ่มเข้ามาใหม่ และ การเข้าถึง หน่วยความจำนอกฮีป การเพิ่มเติมเหล่านี้ใน JDK ช่วยให้สามารถเข้าถึงหน่วยความจำเนทีฟและไลบรารีที่ไม่ใช่ส่วนหนึ่งของ JDK...
การผูกมัด
ไลบรารีเข้าถึงโค้ด C ดั้งเดิมผ่านทาง Java Native Interface (JNI) การผูกกับไลบรารีดั้งเดิมแต่ละตัวมีอยู่เป็นโมดูลที่แตกต่างกัน ดังนั้นนักพัฒนาจึงสามารถสร้างแบบกำหนดเองได้โดยมีเฉพาะสิ่งที่พวกเขาต้องการในโปรแกรมใดโปรแกรมหนึ่งเท่านั้น [ 8 ] [ 11 ] [ 2 ]
การใช้งานที่น่าสนใจ
Minecraft: Java Edition [ 14 ] [ 15 ] โครงการซอมบอยด์ [ 14 ] [ 16 ] อัศวินเกลียว [ 14 ] ภาคดาว [ 14 ]