โอเพนจีแอล
โอเพนจีแอล (อังกฤษ: OpenGL: Open Graphics Library[4][5][6] ไลบรารีกราฟิกส์แบบเปิด) คือส่วนต่อประสานโปรแกรมประยุกต์ (API) ด้านการเร็นเดอร์ภาพกราฟิกส์เวกเตอร์สองมิติและสามมิติ ที่ทำงานได้หลายแพลตฟอร์มและหลายภาษา ส่วนต่อประสานนี้มักใช้ทำงานระหว่างหน่วยประมวลผลกราฟิกส์ (GPU) เพื่อให้บรรลุผลการเร็นเดอร์แบบเร่งด้วยฮาร์ดแวร์
ผู้ออกแบบ | ซิลิคอนกราฟิกส์ |
---|---|
นักพัฒนา |
|
วันที่เปิดตัว | 30 มิถุนายน 1992 |
รุ่นเสถียร | 4.6 / 31 กรกฎาคม 2017 |
ภาษาที่เขียน | ภาษาซี[1] |
ระบบปฏิบัติการ | ข้ามแพลตฟอร์ม |
แพลตฟอร์ม | ข้ามแพลตฟอร์ม |
ประเภท | ส่วนต่อประสานโปรแกรมประยุกต์ |
สัญญาอนุญาต | หลากหลาย[2][3] |
เว็บไซต์ | www.opengl.org |
โอเพนจีแอลได้รับการพัฒนาขึ้นโดยบริษัทซิลิคอนกราฟิกส์ (Silicon Graphics Inc.: SGI) ตั้งแต่ พ.ศ. 2534 และออกเผยแพร่เมื่อ 30 มิถุนายน พ.ศ. 2535[7][8] และใช้งานอย่างกว้างขวางในการออกแบบใช้คอมพิวเตอร์ช่วย (CAD) ความเป็นจริงเสมือน การทำให้เห็นได้เชิงวิทยาศาสตร์ การทำสารสนเทศให้เห็นได้ เครื่องจำลองการฝึกบิน และวิดีโอเกมเป็นต้น โครโนสกรุป ซึ่งเป็นกลุ่มบริษัทด้านเทคโนโลยีที่ไม่แสวงผลกำไร ได้เข้ามาบริหารจัดการโอเพนจีแอลตั้งแต่ปี พ.ศ. 2559
ประวัติ
ตั้งแต่คริสต์ทศวรรษ 1980 การพัฒนาซอฟต์แวร์ที่สามารถทำงานกับฮาร์ดแวร์กราฟิกได้หลากชนิดเป็นความท้าทายอย่างยิ่ง นักพัฒนาซอฟต์แวร์เขียนอินเทอร์เฟซและไดรเวอร์ของตนเองสำหรับฮาร์ดแวร์แต่ละชิ้น ทำให้ต้องใช้ความพยายามทวีคูณและมีราคาแพง
มาถึงต้นคริสต์ทศวรรษ 1990 ซิลิคอนกราฟิกส์เป็นผู้นำในเรื่องภาพกราฟิกส์สามมิติสำหรับเครื่องสถานีงาน เอพีไอชื่อ ไอริสจีแอล (IRIS GL) ของบริษัทนี้[9] ถือว่า "นำสมัย" และกลายมาเป็นมาตรฐานด้านอุตสาหกรรมตามความนิยม บดบังรัศมี ฟิกส์ (PHIGS) ซึ่งเป็นเอพีไอที่มีพื้นฐานบนมาตรฐานเปิด เนื่องจากไอริสจีแอลใช้งานง่ายกว่าฟิกส์ และรองรับการเร็นเดอร์ในภาวะทันที (immediate mode)
บริษัทคู่แข่งของซิลิคอนกราฟิกส์ (รวมทั้งซันไมโครซิสเต็มส์ ฮิวเลตต์-แพคการ์ด และไอบีเอ็ม) ก็สามารถนำฮาร์ดแวร์สามมิติที่รองรับส่วนขยายต่าง ๆ สำหรับมาตรฐานฟิกส์เข้าสู่ตลาด ทำให้ส่วนแบ่งการตลาดของซิลิคอนกราฟิกส์ลดลงเนื่องจากผู้ผลิตฮาร์ดแวร์ภาพกราฟิกส์สามมิติเข้าสู่ตลาดมากขึ้น ด้วยความพยายามที่จะคงไว้ซึ่งอิทธิพลในตลาด ซิลิคอนกราฟิกส์จึงตัดสินใจเปลี่ยนไอริสจีแอลเป็นมาตรฐานเปิด ซึ่งนั่นก็คือ โอเพนจีแอล
อย่างไรก็ตาม ซิลิคอนกราฟิกส์มีลูกค้าด้านซอฟต์แวร์จำนวนมาก ซึ่งการเปลี่ยนจากไอริสจีแอลเป็นโอเพนจีแอลจะต้องใช้เงินลงทุนมาก ยิ่งไปกว่านั้น ไอริสจีแอลมีฟังก์ชันหลายฟังก์ชันที่ไม่เกี่ยวข้องกับด้านภาพกราฟิกส์สามมิติอยู่ด้วย เช่น เอพีไอที่เกี่ยวกับการจัดแบ่งหน้าต่าง คีย์บอร์ดและเมาส์ เป็นต้น เพราะว่ามันได้พัฒนาขึ้นก่อนที่จะมีเอ็กซ์วินโดวซิสเต็มและระบบนิวส์ของซัน และไลบรารีต่าง ๆ ของไอริสจีแอลไม่เหมาะที่จะเปลี่ยนเป็นมาตรฐานเปิดเนื่องจากปัญหาด้านลิขสิทธิ์และสิทธิบัตร ปัจจัยเหล่านี้ทำให้ซิลิคอนกราฟิกส์จำเป็นต้องคอยสนับสนุนผู้พัฒนาซอฟต์แวร์และเอพีไอที่ใช้ไอริสจีแอลเป็นฐานต่อไป ในขณะที่การสนับสนุนตลาดโอเพนจีแอลก็โตเต็มที่
ข้อจำกัดหนึ่งของไอริสจีแอลก็คือ การเข้าถึงคุณลักษณะที่รองรับโดยฮาร์ดแวร์ที่กำหนดเท่านั้น ถ้าฮาร์ดแวร์กราฟิกไม่รองรับคุณลักษณะอันใดอันหนึ่ง โปรแกรมประยุกต์ก็จะไม่สามารถใช้คุณลักษณะนั้นได้ โอเพนจีแอลได้แก้ปัญหานี้โดยเตรียมซอฟต์แวร์รองรับไว้สำหรับคุณลักษณะที่ไม่มีในฮาร์ดแวร์ ช่วยให้โปรแกรมประยุกต์สามารถใช้กราฟิกขั้นสูงบนระบบค่อนข้างต่ำได้ โอเพนจีแอลได้กำหนดวิธีการเข้าถึงฮาร์ดแวร์ให้เป็นมาตรฐาน ผลักดันภาระการพัฒนาโปรแกรมส่วนต่อประสานฮาร์ดแวร์ให้เป็นของผู้ผลิตฮาร์ดแวร์ และมอบหมายฟังก์ชันการจัดแบ่งหน้าต่างให้ระบบปฏิบัติการทำแทน ด้วยฮาร์ดแวร์กราฟิกมีมากมายหลายหลาก การทำให้ฮาร์ดแวร์ทั้งหมดพูดคุยด้วยภาษาเดียวกันในแนวทางนี้จึงเป็นผลสะท้อนที่โดดเด่น ที่ทำให้นักพัฒนาสามารถพัฒนาซอฟต์แวร์ภาพกราฟิกสามมิติบนแพลตฟอร์มในระดับที่สูงขึ้น
เมื่อ พ.ศ. 2535 ซิลิคอนกราฟิกส์ได้เป็นผู้นำในการตั้งคณะกรรมการทบทวนสถาปัตยกรรมโอเพนจีแอล (OpenGL Architecture Review Board: OpenGL ARB) ขึ้นมา ซึ่งเป็นกลุ่มของบริษัทต่าง ๆ ที่จะคอยบำรุงรักษาและขยายข้อกำหนดของโอเพนจีแอลในอนาคต[10]
เมื่อ พ.ศ. 2537 ซิลิคอนกราฟิกส์ได้มีแนวคิดที่จะสร้างโอเพนจีแอลพลัสพลัส (OpenGL++) ที่มีส่วนประกอบอย่างเช่น เอพีไอ scene-graph (โดยคาดว่าจะใช้เทคโนโลยีเพอร์ฟอร์เมอร์เป็นฐาน) ข้อกำหนดนี้หมุนเวียนกันอยู่ในกลุ่มของบริษัทที่สนใจกลุ่มเล็ก ๆ แต่ก็ไม่ได้กลายมาเป็นผลิตภัณฑ์[11]
เมื่อ พ.ศ. 2538 ไมโครซอฟท์ได้เผยแพร่ไดเรกต์ทรีดี (Direct3D) ออกมา ซึ่งในที่สุดก็กลายมาเป็นคู่แข่งหลักของโอเพนจีแอล ต่อมาวันที่ 17 ธันวาคม พ.ศ. 2540 ไมโครซอฟท์กับซิลิคอนกราฟิกส์ได้ริเริ่มโครงการฟาเรนไฮต์[12] ซึ่งเป็นความพยายามบรรลุเป้าหมายการรวมส่วนต่อประสานโอเพนจีแอลกับไดเรกต์ทรีดีเข้าด้วยกัน (และเอพีไอ scene-graph ด้วย) และต่อมาฮิวเลตต์-แพคการ์ดก็ได้เข้าร่วมโครงการด้วยใน พ.ศ. 2541[13] โครงการเริ่มต้นขึ้นด้วยสัญญาที่ว่าจะนำเอพีไอคอมพิวเตอร์กราฟิกส์สามมิติที่โต้ตอบได้มาสู่ชาวโลก แต่เนื่องด้วยข้อจำกัดทางการเงินของซิลิคอนกราฟิกส์ เหตุผลเชิงกลยุทธ์ของไมโครซอฟท์ และการขาดการสนับสนุนด้านอุตสาหกรรมโดยทั่วไป โครงการนี้จึงถูกทอดทิ้งไปเมื่อ พ.ศ. 2542[14]
เมื่อเดือนกรกฎาคม พ.ศ. 2549 คณะกรรมการทบทวนสถาปัตยกรรมโอเพนจีแอล ได้มีมติให้ส่งมอบการควบคุมมาตรฐานเอพีไอของโอเพนจีแอลแก่โครโนสกรุป (Khronos Group)[15][16]
ความเปลี่ยนแปลงในอุตสาหกรรมเกมส์
เมื่อเดือนมิถุนายน พ.ศ. 2561 บริษัทแอปเปิล ได้ประกาศว่าสถานะของ OpenGL และ OpenCL จะถือเป็น deprecated (เลิกใช้) ในทุกแพลตฟอร์ม (iOS, macOS และ tvOS) โดยเสนอแนะให้นักพัฒนาโปรแกรมหันไปใช้ Metal API ซึ่งเป็นผลิตภัณฑ์ของแอปเปิลแทน เอพีไอดังกล่าวได้รับการเผยแพร่มาตั้งแต่ พ.ศ. 2557[17]
บริษัทไอดีซอฟต์แวร์ (id Software) ได้ใช้โอเพนจีแอลในการสร้างเกมตั้งแต่ GLQuake (เปลี่ยนเทคโนโลยีจาก Quake มาเป็นโอเพนจีแอลโดยมีการปรับแต่งเล็กน้อย) ซึ่งถูกปล่อยออกมาในปี พ.ศ. 2540 [18] ตัวเอนจิ้นแรกของบริษัทที่ใช้โอเพนจีแอลอย่างถูกต้องมีลิขสิทธิ์คือ Quake II engine หรือ id Tech 2[19] ในปี พ.ศ. 2559 พวกเขาได้ปล่อยตัวอัปเดตสำหรับ id Tech 6 ซึ่งใช้ Vulkan อันเป็นเทคโนโลยียุคใหม่ถัดจากโอเพนจีแอล ID Tech 7 จึงเลิกใช้โอเพนจีแอล[20]
เมื่อเดือนมีนาคม พ.ศ. 2566 บริษัทวาล์ว (Valve Corporation) ได้ถอดโอเพ่นจีแอลออกจาก Dota 2[21]
โครโนกรุ๊ปได้ถอดโอเพนจีแอลออกจากเทคโนโลยีคอมพิวเตอร์กราฟฟิกส์สมัยใหม่หลายตัว เช่น เรย์เทรซซิ่ง การเข้ารหัสวีโดโอบนจีพียู การลบรอยหยักในกราฟิกส์ อัลกอริธึมในดีพเลิร์นนิ่ง FidelityFX Super Resolution(FSR) ของ AMD[22][23] และ Nvidia DLSS[24][25]
เกมส์ Atypical ซึ่งสนับสนุนโดย Samsung ได้ปรับปรุงเอ็นจิ้นใหม่โดยใช้ Vulkan แทนที่จะเป็นโอเพนจีแอล[26]
นอกจากนี้ Google Stadia และระบบปฏิบัติการ Fuchsia ก็ใช้ Vulkan เป็นกราฟฟิกเอพีไอหลัก รวมทั้งต้องการให้ใช้จีพียูที่สนับสนุน Vulkan ด้วย ทั้งนี้ Fuchsia ตั้งใจที่จะใช้โอเพนจีแอลบนชั้นของ Vulkan ด้วยเลเยอร์ของ ANGLE translation[27][28]
ประวัติรุ่น
โอเพนจีแอลรุ่นแรก หรือเวอร์ชัน 1.0 เปิดตัวเมื่อ 30 มิถุนายน พ.ศ. 2535 โดยมาร์ค ซีกัล และเคิร์ต อะเคลลีย์ หลังจากนั้นมา โอเพนจีแอลได้รับการปรับปรุงคุณลักษณะหลายเวอร์ชัน ในแต่ละเวอร์ชันได้กำหนดฟีเจอร์ต่าง ๆ ที่เป็นพื้นฐานให้กราฟฟิกการ์ดต้องสนับสนุนหรือรองรับ และต่อต้านส่วนต่อขยายด้วยการเขียนที่ง่ายกว่วา เวอร์ชันใหม่แต่ละเวอร์ชันมีแนวโน้มที่จะรวมส่วนขยายต่างๆ เข้าด้วยกันซึ่งได้รับการสนับสนุนอย่างกว้างขวางจากผู้จำหน่ายกราฟิกการ์ด แม้ว่ารายละเอียดของส่วนขยายเหล่านั้นอาจมีการเปลี่ยนแปลงได้
เวอร์ชัน | วันที่เผยแพร่ | คุณสมบัติใหม่ |
---|---|---|
1.1 | พ.ศ. 2538 | Texture objects, Vertex Arrays |
1.2 | 16 มีนาคม พ.ศ. 2538 | 3D textures, BGRA และ packed pixel formats,[29] และมีการใช้imaging subset ซึ่งเป็นประโยชน์แก่แอพประมวลผลข้อมูลภาพ |
1.2.1 | 14 ตุลาคม พ.ศ. 2538 | ออกส่วนขยาย ARB |
1.3 | 14 สิงหาคม พ.ศ. 2544 | Multitexturing, multisampling, texture compression |
1.4 | 24 กรกฎาคม พ.ศ. 2545 | Depth textures, GLSlang[30] |
1.5 | 29 กรกฎาคม พ.ศ. 2546 | Vertex Buffer Object (VBO), Occlusion Queries |
2.0 | 7 กันยายน พ.ศ. 2547 | GLSL 1.1, MRT, Non Power of Two textures, Point Sprites,[31] Two-sided stencil |
2.1 | 2 กรกฎาคม พ.ศ. 2549 | GLSL 1.2, Pixel Buffer Object (PBO), sRGB Textures |
3.0 | 11 สิงหาคม พ.ศ. 2551 | GLSL 1.3, Texture Arrays, Conditional rendering, Frame Buffer Object (FBO) |
3.1 | 24 มีนาคม พ.ศ. 2552 | GLSL 1.4, Instancing, Texture Buffer Object, Uniform Buffer Object, Primitive restart |
3.2 | 3 สิงหาคม พ.ศ. 2552 | GLSL 1.5, Geometry Shader, Multi-sampled textures |
3.3 | 11 มีนาคม พ.ศ. 2553 | GLSL 3.30, ปรับปรุงฟังก์ชันรุ่นเก่าให้เข้าได้กับคุณลักษณะของ OpenGL 4.0 |
4.0 | 11 มีนาคม พ.ศ. 2553 | GLSL 4.00, Tessellation on GPU, shaders with 64-bit precision[32] |
4.1 | 26 กรกฎาคม พ.ศ. 2553 | GLSL 4.10, แสดง debug output ให้ดูง่าย, เข้ากันได้กับ OpenGL ES 2.0[33] |
4.2 | 8 กรกฎาคม พ.ศ. 2554 | GLSL 4.20, Shaders ด้วย atomic counters, draw transform feedback instanced, การแพ็ค shader, เพิ่มขีดสมรรถนะ |
4.3 | 6 สิงหาคม พ.ศ. 2555 | GLSL 4.30, Compute shaders leveraging GPU parallelism, shader storage buffer objects, high-quality ETC2/EAC texture compression, increased memory security, a multi-application robustness extension, compatibility with OpenGL ES 3.0[34] |
4.4 | 22 กรกฎาคม พ.ศ. 2556[35] | GLSL 4.40, Buffer Placement Control, Efficient Asynchronous Queries, Shader Variable Layout, Efficient Multiple Object Binding, Streamlined Porting of Direct3D applications, Bindless Texture Extension, Sparse Texture Extension[35] |
4.5 | 11 สิงหาคม พ.ศ. 2557 | GLSL 4.50, Direct State Access (DSA), Flush Control, ความคงทน, ความเข้ากันได้กับ OpenGL ES 3.1 API และ shader, ฟีเจอร์การจำลอง DX11 |
4.6 | 31 กรกฎาคม พ.ศ. 2560 | GLSL 4.60, เพิ่มประสิทธิภาพการประมวลผลเรขาคณิตและการรันเเชดเดอร์, เพิ่มข้อมูล, no error context, polygon offset clamp, SPIR-V, anisotropic filtering |
แหล่งข้อมูลเรียนรู้-ฝึกฝน
- OpenGL Step by Step[36] ฝึกการเขียนโปรแกรมโดยใช้โอเพนจีแอล ทีละสเต็ป
- OpenGL Introduction [37] แนะนำการเขียนโปรแกรมโดยใช้โอเพนจีแอล
- OpenGL SDK [38] แนะนำเครื่องมือพัฒนาโปรแกรมโดยใช้โอเพนจีแอล
- Anton's OpenGL 4 Tutorials [39] ฝึกการเขียนโปรแกรมโดยใช้โอเพนจีแอล เวอร์ชัน 4
- Getting Started - OpenGL Wiki [40] เริ่มต้นกับโอเพนจีแอลวิกิ
- Learn OpenGL [41] เรียนรู้โอเพนจีแอล พร้อมซอร์สโค้ด
วัลแคน
วัลแคน (Vulkan) เดิมเรียกว่า "Next Generation OpenGL Initiative" (glNext)[42][43] เป็นการออกแบบระบบใหม่เพื่อหลอมรวม OpenGL และ OpenGL ES ให้เป็น API เดียว ซึ่งจะไม่คำนึงถึงความเข้ากันได้กับเวอร์ชันของโอเพนจีแอลที่มีอยู่[44][45][46]
วัลแคนเวอร์ชันแรก ได้รับการเผยแพร่เมื่อวันที่ 16 กุมภาพันธ์ พ.ศ. 2559
Vulkan เป็น API ใหม่สำหรับกราฟิกที่เร่งความเร็วด้วยฮาร์ดแวร์ (และการคำนวณทั่วไป) ผ่าน GPU ดั้งเดิม โอเพนจีแอลจะยังคงได้รับการพัฒนาต่อไปเนื่องจากเป็น API ระดับสูงกว่า Vulkan เราสามารถอนุมานได้ว่า Vulkan นั้นน่าจะจบลงด้วยการเป็น "OpenGL 5"
อ้างอิง
- The Red Book – OpenGL Programming Guide, 6th edition. ISBN 0-321-48100-3
ดูเพิ่ม
- คอมพิวเตอร์กราฟิกส์สามมิติ
- เรขภาพคอมพิวเตอร์ (คอมพิวเตอร์กราฟิกส์)
- ไดเรกเอกซ์
- OpenGL ES
- GLSL
- OpenAL
- XNA
- เกมคอมพิวเตอร์
แหล่งข้อมูลอื่น
- โอเพนจีแอล เก็บถาวร 2011-02-26 ที่ เวย์แบ็กแมชชีน