← กลับไปยังบทความทั้งหมด

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 Overview
ภาพรวมการทำงานของ Graphics Device Interface ในระบบปฏิบัติการ Windows

ข้อดีและข้อจำกัดของ 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 Evolution
วิวัฒนาการของระบบกราฟิกใน Windows จาก GDI สู่ GDI+

ประวัติและวิวัฒนาการ

เวอร์ชันเริ่มต้น

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 ด้วยฮาร์ดแวร์ และไม่มีระบบซิงโครไนซ์เฟรมวิดีโอที่จำเป็นสำหรับการสร้างแอนิเมชันที่ลื่นไหล