Graphics Device Interface (GDI) คืออะไร? ทำความรู้จักระบบกราฟิกของ Windows
สรุปใจความสำคัญ
- GDI เป็นส่วนประกอบดั้งเดิมของ Windows ที่ใช้ในการวาดกราฟิก 2D และเรนเดอร์ฟอนต์
- GDI+ ถูกนำเข้ามาใน Windows XP เพื่อเพิ่มความสามารถด้าน Anti-aliasing และการรองรับไฟล์ภาพ JPEG/PNG
- Desktop Window Manager (DWM) ใน Windows Vista เป็นต้นมา ช่วยให้การแสดงผล GDI ทำงานร่วมกับ GPU ได้ดีขึ้น
- GDI Printer คือเครื่องพิมพ์ที่พึ่งพาการประมวลผลกราฟิกจาก GDI ของคอมพิวเตอร์โฮสต์ในการสร้างภาพพิมพ์
Graphics Device Interface (GDI) หรือ GDI คือส่วนประกอบดั้งเดิมของ Microsoft Windows ที่ทำหน้าที่ในการแสดงผลวัตถุกราฟิกและส่งข้อมูลไปยังอุปกรณ์ส่งออก เช่น จอภาพและเครื่องพิมพ์ โดย GDI ช่วยให้แอปพลิเคชันสามารถวาดเส้น โค้ง และเรนเดอร์ฟอนต์ รวมถึงจัดการพาเลทสีได้อย่างมีประสิทธิภาพ

ข้อดีและข้อจำกัดของ GDI
ข้อดีที่สำคัญที่สุดของ GDI คือความสามารถในการปรับขนาด (Scaling) และการนำเสนออุปกรณ์เป้าหมายแบบนามธรรม (Abstract representation) ซึ่งช่วยให้ผู้พัฒนาสามารถวาดภาพบนอุปกรณ์ที่แตกต่างกัน เช่น หน้าจอและเครื่องพิมพ์ โดยที่ผลลัพธ์ที่ได้จะมีความถูกต้องและเหมาะสมในแต่ละกรณี ซึ่งเป็นหัวใจสำคัญของแอปพลิเคชันประเภท "What You See Is What You Get" (WYSIWYG) ใน Windows
อย่างไรก็ตาม GDI มีข้อจำกัดในการสร้างแอนิเมชันขั้นสูง เนื่องจากขาดการซิงโครไนซ์กับเฟรมวิดีโอของวิดีโอการ์ด และไม่มีการเรนเดอร์ 3D ด้วยฮาร์ดแวร์ ดังนั้น เกมสมัยใหม่จึงหันไปใช้ Direct3D, Vulkan หรือ OpenGL แทน
รายละเอียดทางเทคนิค
ในระบบ GDI จะมีการใช้ Device Context (DC) เพื่อกำหนดคุณลักษณะของข้อความและรูปภาพสำหรับอุปกรณ์ส่งออก GDI จะเป็นผู้ดูแลบริบทนี้ และการสร้างผลลัพธ์จำเป็นต้องใช้ Handle to the Device Context (HDC) เมื่อสร้างผลลัพธ์เสร็จสิ้น Handle ดังกล่าวจะถูกปล่อยคืนสู่ระบบ
นอกจากนี้ GDI ยังใช้อัลกอริทึม Bresenham's line drawing algorithm ในการวาดเส้นแบบ Aliased

ประวัติและวิวัฒนาการ
เวอร์ชันเริ่มต้น
GDI มีมาตั้งแต่ Windows เวอร์ชันแรกๆ โดยในสมัยก่อน โปรแกรม MS-DOS จะจัดการฮาร์ดแวร์กราฟิกผ่าน Software Interrupts หรือจัดการหน่วยความจำวิดีโอโดยตรง ซึ่งไม่สามารถใช้งานได้ในสภาพแวดล้อมแบบ Multitasking ของ Windows
Windows XP และ GDI+
ใน Windows XP ได้มีการนำ GDI+ เข้ามาเสริม GDI โดยเขียนด้วยภาษา C++ ซึ่งเพิ่มความสามารถด้านกราฟิก 2D แบบ Anti-aliased, พิกัดแบบ Floating-point, การไล่เฉดสี (Gradient shading) และการรองรับไฟล์ภาพสมัยใหม่ เช่น JPEG และ PNG ซึ่งช่วยให้การสร้างระบบ Vector Graphics เช่น Adobe Flash หรือ SVG ทำได้ง่ายขึ้น
Windows Vista และ Windows 7
ใน Windows Vista แอปพลิเคชัน GDI และ GDI+ จะทำงานภายใต้ Desktop Window Manager (DWM) ซึ่งเร่งความเร็วด้วย GPU ฮาร์ดแวร์ ทำให้การเคลื่อนย้ายหน้าต่างมีความลื่นไหลมากขึ้น
ใน Windows 7 ได้มีการเพิ่มการเร่งความเร็วฮาร์ดแวร์สำหรับปฏิบัติการ Blitting ใน Windows Display Driver Model v1.1 ซึ่งช่วยลดการใช้หน่วยความจำระบบและเพิ่มประสิทธิภาพการทำงานของกราฟิก
GDI Printers
GDI Printer หรือ Winprinter คือเครื่องพิมพ์ที่ออกแบบมาเพื่อรับข้อมูลจากคอมพิวเตอร์ที่รัน Windows โดยให้คอมพิวเตอร์เป็นผู้ประมวลผลการพิมพ์ทั้งหมด GDI จะเรนเดอร์หน้ากระดาษเป็น Bitmap แล้วส่งไปยังเครื่องพิมพ์ ซึ่งแตกต่างจากเครื่องพิมพ์ที่มีภาษาควบคุมของตัวเองที่สามารถประมวลผลการเรนเดอร์ได้ภายในตัวเครื่อง
คำถามที่พบบ่อย
GDI คืออะไร?
GDI คือ Graphics Device Interface ซึ่งเป็น API ของ Windows ที่ใช้สำหรับวาดรูปทรงพื้นฐาน, ข้อความ และรูปภาพลงบนหน้าจอหรือเครื่องพิมพ์
GDI แตกต่างจาก GDI+ อย่างไร?
GDI+ เป็นเวอร์ชันที่พัฒนาต่อยอดจาก GDI โดยเพิ่มความสามารถในการวาดเส้นที่เรียบเนียนขึ้น (Anti-aliasing), การไล่เฉดสี และการรองรับรูปแบบไฟล์ภาพที่ทันสมัยกว่า
ทำไมเกมสมัยใหม่ไม่ใช้ GDI?
เพราะ GDI ขาดการสนับสนุนการเรนเดอร์ 3D ด้วยฮาร์ดแวร์ และไม่มีระบบซิงโครไนซ์เฟรมวิดีโอที่จำเป็นสำหรับการสร้างแอนิเมชันที่ลื่นไหล