Month: December 2011

การกลับมาของ OpenGL เพื่อมาต่อกรกับ DirectX

ท้าวความถึง OpenGL

  • OpenGL มองในด้านโปรแกรมมิ่งจะเป็นคำสั่งชุดหรือ APIs (Application Program Interface) สำหรับให้ผู้พัฒนาโปรแกรมด้าน 3D สามารถเรียกใช้ความสามารถจากฮาร์ดแวร์บนเครื่องคอมพิวเตอร์ OpenGL เป็น Cross-Platform สามารถจะใช้ได้บนวินโดส์ ลีนุกซ์ บนแมค
  • สำหรับโปรแกรมด้าน 3D พอจะแบ่งได้คร่าวๆ 3 ประเภทคืออย่างแรกด้าน CAD & GIS อย่างที่สองคือโปรแกรมด้าน 3D Graphic Animation(3D Max, Maya) อย่างหลังคือ Game ซึ่งเป็นตลาดที่ใหญ่มาก โปรแกรมจำพวกนี้ถ้าไม่ใช้ OpenGL ก็ใช้ DirectX ของ Microsoft ซึ่งจะได้กล่าวอีกครั้ง

ผู้ก่อกำเนิด OpenGL

  • ย้อนหลังไปในปี 1981 บริษัทฯ Silicon Graphics International Corp ได้ถูกก่อ โดย Jim Clark  ต่อไปจะเรียกชื่อบริษัทฯนี้สั้นๆว่า SGI ซึ่งตั้งขึ้นมาเพื่อตลาดด้าน 2D & 3D Graphic ประกอบไปด้วยฮาร์ดแวร์และซอฟแวร์ คือขายรวมกัน ฮาร์ดแวร์ส่วนใหญ่เป็น workstation ทำงานอยู่บน Unix
  • บทบาทที่สำคัญของ SGI คือออกแบบไลบรารี IRIS GL และสร้าง APIs สำหรับให้นักพัฒนาโปรแกรมบน workstation ของ SGI ได้พัฒนาโปรแกรมด้าน 2D & 3D บน platform ของ SGI นับว่าเป็นการปฏิวัติวงการกราฟฟิคซึ่งจะมีบทบาทอย่างสูงในช่วงปี 1990
  • ต้นปี 1990 SGI คือผู้นำในวงการ 3D Graphic เพราะความเสามารถด้านฮาร์ดแวร์และไลบรารี IRIS GL ที่มีความยืดหยุ่นใช้งานได้ง่าย ความสามารถสูงและเป็นมาตรฐานสำหรับงาน 3D Graphic แต่ก็มีปัญหาตามมาคือ platform ของ SGI ยังเป็นระบบปิด ทำให้คู่แข่งไม่มีโอกาสและความได้เปรียบ ปี 1992 ทาง SGI จึงทำการแก้ไข IRIS GL ใหม่โดยยกเลิกสิ่งที่ไม่เกี่ยวข้องบางอย่างออก และเรียกว่า OpenGL (Open Graphic Library) เพื่อให้ผู้ผลิดฮาร์ดแวร์สามารถนำพัฒนา Device Driver ให้มีความสามารถด้าน 3D Graphic ตามไลบรารีที่ SGI ได้ออกแบบไว้ ในที่สุด OpenGL ก็กลายเป็นมาตรฐาน
  • การเปิดแบบนี้ทำให้ผู้ผลิตฮาร์ดแวร์เช่นการ์ดจออื่นๆสามารถนำความสามารถของ  OpenGL ไปผลิตการ์ดจอให้ได้ตามที่ต้องการไม่ต้องยึดติดกับ platform ของ SGI และในทางเดียวกันผู้พัฒนาโปรแกรมก็สามารถนำ APIs ของ OpenGL ไปพัฒนาซอฟแวร์ประเภท 3D ที่กล่าวไปแล้วเช่นเดียวกัน ตราบเท่าที่ฮาร์ดแวร์สนันสนุนโปรแกรม 3D นั้นๆก็สามารถรันได้

ความยืดหยุ่น (Flexibility)

  • ประโยชน์สูงสุดของ OpenGL ในตอนนี้คือผู้ผลิตฮาร์ดแวร์ต่างๆสามารถเสริมความสามารถด้วย Extension หรือส่วนเสริม ถ้า OpenGL ไม่มีฟีเจอร์ในส่วนนั้น ผู้ผลิตหลายรายเช่น Nvidia, Apple ได้พัฒนา extension เพื่อสนับสนุนฮาร์ดแวร์ของตนโดยเฉพาะ มองในข้อดีคือความยืดหยุ่น แต่ข้อเสียก็ตามมาคือไม่เป็นมาตรฐาน

มาตรฐานเปิด (Open Standard)

  • ในปี 1992 มีการก่อตั้ง ARB (OpenGL Architechure Review Board) เพื่อรวบรวมความต้องการของผู้ผลิตฮาร์ดแวร์และซอฟแวร์ต้องการฟีเจอร์อะไรเพิ่มในอนาคต ทั้งนี้เพื่อความเป็นมาตรฐานและเป็นระบบที่เปิดนั่นเอง
  • และแล้ว OpenGL ก็กลายเป็นผู้นำในเรื่อง 3D Graphic API และเป็นหนึ่งเดียวที่สามารถใช้งานได้หลาย platform

OpenGL บนวินโดส์

  • ไมโครซอฟต์ปล่อย Windows NT ในปี 1993 ซึ่งจะเป็นคู่แข่งของระบบ Unix ด้วยการสนับสนุนฮาร์ดแวร์ 32 บิต และก็ปล่อย Win32 API สำหรับสร้างโปรแกรมใช้บนวินโดส์ ซึ่งโปรแกรมเมอร์ C คงจะจำกันได้ดีในยุคนั้น
  • เนื่องจาก  Windows NT ยังไม่มีไลบรารี 3D จึงสนันสนุน OpenGL ปี 1994 ขณะนั้น Windows NT เป็นรุ่น 3.5 แต่ก็ทำงานช้ามาก เพราะยังไม่มีการปรับ OpenGL ให้เข้ากับฮาร์ดแวร์บนวินโดส์

DirectX

  • ไมโครซอฟท์เริ่มมองเห็นความสำคัญของ 3D Graphic ในตลาดเกมส์ และมองหาไลบรารี 3D เพื่อจูงใจผู้พัฒนาเกมส์ ความพยายามครั้งแรกเริ่มที่ WinG API แต่ไลบรารีก็แค่ 2D ก็ยังไม่มีเรื่อง 3D สุดท้ายซื้อบริษัท RenderMorphics ในปี 1995 ผู้ซึ่งผลิต 3D API ในนาม Reality Lab
  • API ตัวนี้ถูกเปลี่ยนชื่อเป็น Direct3D และรวมๆเรียกว่า DirectX ที่มีเครื่องมืออื่นๆเช่นเรื่องเสียง เน็ตเวิร์ค การวาดแบบ 2D อุปกรณ์เช่น Joystick
  • เริ่มต้นแล้ว DirectX การแสดงผลและประสิทธิภาพยังช้าอยู่มาก ทำให้ไมโครซอฟท์ยังคงสนับสนุน OpenGL 1.1 ต่อไปบนวินโดส์ 95 และ NT 4.0

เริ่มต้นสงคราม

  • ขณะที่ไมโครซอฟท์พยายามยืนกรานว่า OpenGL ดีสำหรับงาน CAD (Computer Aided Design) เท่านั้น เพื่อที่จะครอบครองตลาดเกมส์แต่เพียงผู้เดียว John Carmack แห่ง id software บริษัทผู้พัฒนาเกมส์ Quake ที่ใช้ OpenGL ออกมาวิจารณ์ถึงความง่ายในการใช้งาน OpenGL
  • ธันวาคม ปี 1996 John Carmack แสดงเอกสารพร้อมทั้งข้อคับข้องใจต่อ Direct3D ไม่เพียงเท่านั้นยังแสดงการเปรียบเทียบโค๊ดของโปรแกรมที่วาดรูปสามเหลี่ยมบนจอภาพ OpenGL ใช้เพียง 4 บรรทัดเท่านั้นแต่ Direct3D กลับใช้โค๊ดมากกว่าหลายบรรทัด
  • กุมภาพันธ์ ปี 1997 Alex St. John ผู้พัฒนา Direct3D ของไมโครซอฟท์ก็ออกมาตอบใต้ว่าคำวิจารณ์ของ John Carmack ได้สร้างความเสียหายให้กับ Direct3D เขาอธิบายว่า Direct3D นั้นเน้นเข้าถึงฮาร์ดแวร์มากกว่าซอฟแวร์ ถึงโค๊ดของโปรแกรมไม่สวยแต่ก็ทำงานได้ดี และก็ตอกย้ำอีกครั้งว่า OpenGL เหมาะที่จะเป็น API สำหรับโปรแกรมด้าน Cad เท่านั้น
  • เดือนมิถุนายน 1977 SGI ออกมาสำทับต้อบโต้กับบทวิจารณ์ของ Alex St. john เรื่องความบกพร่องต่อการออกแบบ Direct3D เปรียบเทียบ  API  ทั้งสองและแสดงถึงความง่ายในการใช้งาน OpenGL
  • ไมโครซอฟท์ปรับปรุง Direct3D ในรุ่น 5.0 ถอดเอาฟึเจอร์ที่ไม่สะดวกในการใช้งานออก ในตอนนี้ทั้งสอง API ใช้งานได้ง่ายแล้ว

เรื่องของ Driver

  • สำหรับไดรเวอร์ของ OpenGL จะถูกใช้งานใน Windows NT ผ่านทางไดรเวอร์ที่เรียกว่า Mini-Client Driver (MCD) ซึ่งทำให้ประสิทธิภาพต่ำมาก แต่ก็เป็นวิธีการที่ง่ายที่สุดในการสร้างไดรเวอร์สำหรับฮาร์ดแวร์ที่ต้องการใช้กับ OpenGL แต่ไมโครซอฟท์ก็ตอบโต้ด้วยการไม่อนุญาตให้ใช้ MCD ทาง SGI จึงเสนอวิธีสร้างไดรเวอร์สำหรับ Windows NT ผ่านทางที่เรียกว่า Installation Client Driver (ICD) ทางผู้ผลิตฮาร์ดแวร์ได้ใช้ ICD เพื่อสร้างไดรเวอร์ ไม่นานจากนี้อุตสาหกรรมเกมส์เริ่มนำ OpenGL มาใช้เป็นทางเลือกแทนที่ Direct3D

การปฏิวัติของวงการฮาร์ดแวร์

  • ในช่วงปลายของศตวรรษ 1990 OpenGL ได้ปักหลักในอุตสาหกรรมไม่เฉพาะด้าน CAD เท่านั้น เกมส์ดังๆเช่น Quake 2, Unreal และ Half-Life ก็ได้ใช้ OpenGL และเป็นที่นิยมในเกมส์อื่นๆเช่นเดียวกัน ในตอนนี้ก็มีผู้ผลิตการ์ดจอในราคาไม่แพงและจะเป็นผู้มาปฏิวัติวงการก็คือ 3Dfx
  • 3Dfx ได้ปล่อยการ์ดจอเรียกว่า Voodoo ซึ่งมีประสิทธิภาพสูงมากในสมัยนั้น ในขณะนั้นทาง ATI เริ่มขาย 3D Rage และ S3 Virge แต่ก็ไม่มีใครสู้ Voodoo ของ 3Dfx ได้ ต้องนี้ 3Dfx คิดการใหญ่ได้สร้าง API ของตัวเองขึ้นมาใหม่เรียกว่า Glide ซึ่งเป็น API ที่เร็วและแรงที่สุด แต่อย่างว่าผู้ผลิตฮาร์ดแวร์อื่นๆก็ใช้ไม่ได้ แต่ Glide ก็สร้างปรากฎการณ์ ไม่นาน Glide ก็พบจุดจบ
  • NVIDIA ถูกก่อตั้งในปี 1999 และขายการ์ดจอชื่อ Geforce 256 และได้เรียกการ์ดจอว่า GPU (Graphic Processing Unit) ได้เพิ่มคุณสมบัติที่เรียกว่า T&L (Transform & Lighting) ตัว T&L จะย้ายการคำนวณ Vertex transformation จาก CPU ไปสู่ GPU ซึ่งข้อดีของ GPU จะคำนวณทางคณิตศาสตร์ได้รวดเร็วมากกว่า  CPU เนื่องจากถูกออกแบบให้ทำงานนี้โดยตรง น่าเศร้าที่ 3Dfx ไม่มีคุณสมบัติ T&L ไม่นาน 3Dfx ก็พบจุดจบ
  • สุดท้าย 3Dfx ก็ล้มละลาย จึงถูก NVIDIA เข้าไปซื้อกิจการและ NVIDIA ก็ไม่ได้ออกการ์ดจอรุ่น Voodoo อีกเลย ในขณะนั้นคู่ปรับตลอดกาลของ NVIDIA คือ ATI ซึ่งมีการ์ดจอชื่อ Radeon 7000 ซึ่งเป็น GPU เช่นเดียวกัน และทั้งสองเจ้านี้ก็สนับสนุนเฉพาะ Direct3D และ OpenGL เท่านั้น

การเปลี่ยนแปลงคุณสมบัติที่สำคัญ

  • ในตอนนี้การเรนเดอร์เพื่อให้ได้ภาพ 3D ถูกย้ายจากการคำนวณจาก CPU ไป GPU เพื่อลดคอขวด สองฟีเจอร์ที่จะกล่าวต่อไปนี้คือวิธีการที่กล่าวไปแล้ว

Buffers

  • ในทางโปรแกรมมิ่งแล้วคำว่า Buffers คือสถานที่ในหน่วยความจำที่ถูกเก็บข้อมูลบางอย่างแบบชั่วคราว เมื่อเลิกใช้แล้ว Buffers ก็จะถูกทำลายเพื่อคืนหน่วยความจำให้กับระบบ
  • วัตถุที่จะถูกเรนเดอร์เป็น 3D บนจอภาพจะถูกเก็บในรูป buffers เช่น Vertex array วิธีการเดิมๆ Vertex array จะถูกเก็บในหน่วยความจำกลาง (บนแรมนั่นเอง) จากนั้นจะย้าย buffer นี้ไป GPU ซึ่งทำให้ช้าเนื่องจาก buffer มีขนาดใหญ่ วิธีการใหม่คือ buffer จะถูกเก็บในหน่วยความจำของ GPU  ทำให้ไม่มีคอขวดอีกต่อไป การเรนเดอร์ทำได้เร็ว
  • ใน OpenGL ตัว buffer นี้เรียกว่า Vertex Buffer Objects (VBOs) ใน Direct3D เรียกว่า Vertex Buffers

Shaders

  • ในปี 2000 ไมโครซอฟท์ได้ปล่อย Direct3D รุ่น 8.0 เพิ่มคุณสมบัติที่เรียกว่า Shaders ซึ่งเป็นโปรแกรมเล็กๆที่รันบน GPU ทำให้เพิ่มความเร็วของการเรนเดอร์ภาพ 3D จะเป็นการลดภาระของ CPU อีกแรงหนึ่ง ไมโครซอฟท์เรียก shaders ที่มีสองแบบว่า Vertex Shader และ Pixel Shaders
  • Vertex Shaders เป็นโปรแกรมที่จะถูกรันต่อหนึ่ง vertex ที่ถูกกำหนดให้ ส่วน Pixel Shaders จะถูกรันต่อหนึ่ง pixel การใช้ shader ดังกล่าวจะลดคอขวดที่จะเรียกใช้งาน CPU ได้มาก แต่ข้อเสียคือยากในการเขียนโปรแกรมเนื่องจากโครงสร้างคล้ายกับภาษา Assembly
  • ในปี 2003 ไมโครซอฟท์ เปลี่ยนโครงสร้างของโปรแกรมให้เขียนได้ง่ายขึ้นเรียกว่า High Level Shader Language (HLSL) พร้อมกับการปล่อย Direct3D รุ่น 9.0 ทั้งนี้โครงสร้างภาษาอยู่บนพื้นฐานภาษา C

ยุคซบเซาของ OpenGL

  • ในตอนนั้น OpenGL ยังไม่สนับสนุนเรื่อง shaders จนกระทั่งในปี 2004 ที่ออก OpenGL รุ่น 2.0 เรียกโครงสร้างของการเขียนโปรแกรม shader นี้ว่า OpenGL Shader Language (GLSL) แต่การตามหลังไมโครซอฟท์ถึง 4 ปีทำให้ OpenGL ต้องวิ่งไล่ Direct3D เหมือนกับที่ Direct3D เคยวิ่งไล่ OpenGL ในทศวรรษก่อนหน้านี้
  • ในปี 2004-2006 มีเกมส์น้อยที่สนับสนุน OpenGL จนกระทั่งปี 2005 ไมโครซอฟท์ออก XBox เพื่อยึดคลองตลาดเกมส์คอนโซล ตอนนี้ทั้ง ARB หรือ SGI ทำตัวเงียบทำให้ดูเหมือนว่า OpenGL ตายแล้ว
  • ในปี 2006 OpenGL รุ่น 2.1 ก็ถูกปล่อยมา มีการเพิ่มฟีเจอร์ไม่กี่อย่าง สถานการณ์ยิ่งเลวร้ายขึ้นเมื่อไมโครซอฟท์ปล่อย Direct3D รุ่น 10.0 ซึ่งจะใช้ได้บน Windows Vista เท่านั้น ผู้ผลิตฮาร์ดแวร์เริ่มปรับทิศทางตามไมโครซอฟท์
  • ในระหว่างนี้โปรแกรมเมอร์ที่ใช้ OpenGL เริ่มถามและต้องการคำตอบจาก ARB และ SGI แต่คำตอบกลับเป็นสิ่งที่แตกต่างตาลปัตร

OpenGL รุ่นใหม่

  • ปี 2006 ก่อตั้ง Khronos Group ขึ้นมาเพื่อดูแล OpenGL แทน SGI ทั้งที่ SGI ยังถือลิขสิทธิ์อยู่ Khronos Group เป็นกลุ่มของผู้ผลิตฮาร์ดแวร์และซอฟแวร์ที่ยังสนใจที่จะใช้ OpenGL ต่อ มีการเปิดเผยว่าใช้รูปแบบการเก็บข้อมูล 3D เรียกว่า Collada ในระหว่างนี้มีข่าวว่า OpenGL จะถูกปรับปรุงเพื่อเปลี่ยนแปลงคุณสมบัติคร้งใหญ่ หลังที่เงียบมาแล้วสองปี

Long Peak และ Mt. Evans

  • รุ่นของ OpenGL ที่จะพัฒนามี code name ว่า Long Peak และ Mt. Evans ตัว Long Peak จะถูกปล่อยในฤดูร้อนปี 2007 และ Mt. Evans จะปล่อยตามติดในเดือนตุลาคมปีเดียวกัน
  • รุ่นดังกล่าวให้ความหวังจะมาต่อกรกับ Direct3D รุ่น 10.0 และการเรนเดอร์จะต้องใช้ buffers และ shader ทั้งหมด ผลก็คือตัว API ต้องเขียนใหม่ทั้งหมดด้วยกลุ่มทีเรียกว่า Technical Sub Group (TSG)
  • หนึ่งในสิ่งที่จะพัฒนาขึ้นมาใหม่คือ Object Model ซึ่งจะต้องมาเกี่ยวข้องกับ buffers การเสนอ Object Model ใหม่นี้ทำให้เกิดวิธีการสร้าง Object Model แบบใหม่ เพียงการใช้ฟังก์ชั่นไม่กี่บรรทัด ตัว Long Peak จะออกแบบใหม่ให้มีการเข้ากันกับฮาร์ดแวร์ก่อนหน้านี้ ส่วน Mt.Evans จะถูกออกแบบโดยไม่มีการเข้ากันกับอุปกรณ์ก่อนหน้านี้ มุ่งไปข้างหน้า ด้วยฟีเจอร์ที่เสนอนี้ ทำให้ได้รับการรอคอยอย่างคาดหวังจากชุมชนคน OpenGL
  • แต่ในฤดูร้อนปี 2007 ก็ผ่านไปจนถึงเดือนตุลาคม มีข่าวจาก Khronos Group ว่าเลื่อนการออก OpenGL ชุมชนคน OpenGL ก็มีอาการไม่พอใจเล็กน้อย แต่เทียบกับคุณสมบัติใหม่ที่รอคอยแล้วก็คุ้มที่จะรอ และแล้วก็ผ่านไปอีกปี

OpenGL รุ่น 3.0

  • เดือนกรกฎาคม ปี 2008 ก็ออกรุ่น 3.0 มา นับเป็นระยะเวลา 4 ปี ตั้งแต่รุ่น 2.1 ออกมา แต่ที่น่าผิดหวังคือคุณสมบัติที่รอคอยกลับไม่มี ดูเหมือนจะเปลี่ยนแปลงไปเล็กน้อย ที่สัญญาเรื่อง Object Model ก็ไม่มีและไม่มีทีท่าว่าจะเกิดขึ้นในรุ่นต่อๆไป มีเพียงฟีเจอร์ใหม่ที่เสนอมาคือ deprecation mode และความเข้ากันได้กับฮาร์ดแวร์ก่อนหน้านี้
  • ยังผลทำให้ชุมชนคน OpenGL ต่อต้านตามเว็บบอร์ด ซึ่งหนึ่งในข้อกล่าวหาต่อ Khronos Group ที่ทำให้ OpenGL มีความเข้ากันได้ฮาร์ดแวร์เก่าๆเพราะต้องการรักษาลูกค้าขายซอฟท์แวร์ด้าน CAD ยังผลให้ผู้พัฒนาซอฟท์แวร์บนวินโดส์ เริ่มทิ้ง OpenGL หันไปใช้ Direct3D ความสิ้นหวังต่อ OpenGL ดูเหมือนว่าสงครามระหว่าง API ได้จบลงไปแล้ว

After the Shock

  • ถึงแม้จะไม่พอใจใน OpenGL รุ่นนี้ก็ตาม แต่ OpenGL 3.0 ก็มีฟีเจอร์เทียบเท่ากับ Direct3D 10.0 แต่สิ่งที่เหนือกว่าคือ OpenGL 3.0 ยังใช้งานได้บน Windows XP แต่ Direct3D 10.0 ต้องรันบน Vista เท่านั้นเนื่องจากโครงสร้าง Drivers ใหม่ของไมโครซอฟท์ที่ต้องการ Vista ขึ้นไปเท่านั้น
  • เดือนมีนาคม 2009 ก็ออก OpenGL 3.1 มาคุณสมบัติใกล้เคียงกันกับ Long Peak และ Mt.Evans ดั่งที่เคยเสนอไปแล้ว ตอนนี้ OpenGL กลับมาอยู่ในเส้นทางที่พร้อมจะต่อกรอีกครั้ง ไม่กี่เดือนต่อมาก็ออกรุ่น 3.2 พร้อมคุณสมบัติใหม่คือ Geometry Shaders

OpenGL รุ่น 4.0

  • หนึ่งปีผ่านไปหลังจากปล่อยรุ่น 3.2 ไปแล้วก็ได้เวลาคลอดรุ่น 4.0 ซึ่งคุณสมบัติพอฟัดพอเหวี่ยงกับ Direct3D 11.0 ในขณะเดียวกันก็ได้ออกรุ่น 3.3 ออกมาด้วยซึ่งมีคุณสมบัติใกล้เคียงกับ 4.0 แต่มีความเข้าได้กับฮาร์ดแวร์รุ่นเก่า
  • ในทุกวันนี้ถ้าต้องการเขียนโปรแกรม 3D ที่สามารถรันได้นอกเหนือจาก platform ของไมโครซอฟท์แล้วทางเลือกเดียวคือ OpenGL ถ้าสนใจจะพัฒนาโปรแกรมด้าน 3D บนอุปกรณ์มือถือเช่น Android หรือ iPad, iPhone ก็มีไลบรารี OpenGL ES ซึ่งใกล้เคียง กับ OpenGL รุ่นใหญ่ ทำให้การ port code ให้สามารถรันได้บน PC, Macs ลีนุกซ์หรือแม้แต่อุปกรณ์มือถือที่กล่าวไปแล้ว
  • นอกจาก OpenGL ES แล้วยังมีรุ่น WebGL สำหรับพัฒนาโปรแกรม 3D บนเว็บ

OpenGL รุ่น 4.1 และ OpenGL 4.2

  • เดือนกรกฎาคม ปี 2010 ออกรุ่น 4.1 มีการปรับปรุงคุณสมบัติบางอย่างที่เทียบเท่ากับ Direct3D 11.0 ในรุ่นนี้โค๊ดของ OpenGL มีการเข้ากันกับ (Full campatibility) OpenGL ES ได้อย่างสมบูรณ์
  • เดือนสิงหาคม ปี 2011 ออกรุ่น 4.2 เช่นเดียวกันปรับปรุงคุณสมบัติหลายอย่างทำให้การเรนเดอร์ทำได้เร็วกว่าเดิม
  • ความต้องการของฮาร์ดแวร์ ได้แก่ Nvidia GeForce 400 series, Nvidia GeForce 500 series, ATI Radeon HD 5000 series, AMD Radeon HD 6000 Series

OpenGL ในมุมของ Lazarus

  • ไม่นานมานี้เองผมพยายามหาไลบรารีที่จะมาช่วยทำโปรแกรม 2D จากที่เคยเขียนมาเองแต่ก็หน่อมแน๊มเกินไป ก็ไปเจอ GLSCene ดั้งเดิมพัฒนาโดย Mike Lischke เปิดเป็น opensource และภายหลังดูแลโดย Eric Grange ตอนแรกพัฒนาเป็น VCL สำหรับโปรแกรมเมอร์ Delphi โดยเฉพาะในรุ่นหลังใช้ได้กับ Lazarus ซึ่งผมลองแล้วทั้งบนวินโดส์กับลีนุกซ์ แต่บนวินโดส์เมื่อดาวน์โหลด sourcecode ตอนติดตั้ง package จะมีปํญหา ผมจึงทำการแก้ไขโค๊ดไปเล็กน้อยก็ใช้งานได้ แต่ตัวอย่างที่ให้มาประมาณ 60% ที่ใช้งานได้ เนื่องจากโน๊ตบุ๊คที่ใช้งานอยู่ ยังเป็นการ์ดจอบนบอร์ด จึงทดสอบคุณสมบัติบางอย่างไม่ได้
  • ผมลองดูตัวอย่างที่ให้มาก็คือพยายามเรียนรู้จากตัวอย่าง ก็ไม่ได้ยากเกินไป จุดเริ่มต้นของผมแค่อยากพัฒนา 2D ในตอนแรกก็เลยมีความตั้งใจจะเรียน 3D ไปด้วย ปีหน้าจะซื้อโน๊ตบุ๊คเครื่องใหม่คงได้ลองฟีเจอร์เด็ดๆดูกัน
GLScene ที่ติดตั้งบน Lazarus
  • ผมนำโค๊ดจากตัวอย่างมาปรับเพิ่ม effect บางอย่างมาเขียนเป็นเมนู Aboutของโปรแกรมแสดงข้อมูลที่เกี่ยวข้องกับโปรแกรมเช่นชื่อโปรแกรม รุ่นของโปรแกรม ผู้พัฒนาก็ได้ผลดังรูปด้านล่าง แสดงรูปของทีมงานผู้พัฒนาโปรแกรมหมุนรอบ effect  ไฟ คล้ายนั่งม้าหมุนที่นั่งกันสมัยเด็ก

    About ของโปรแกรม

ก่อนจากกัน

  • ถ้าสนใจจะลองไลบรารี GLScene บน Lazarus ถ้าดาวน์โหลดมาแล้วใช้ไม่ได้ก็ลองขอมาดู ผมจะนำไฟล์ไปฝากไว้แถวๆ file share ครับ โลกนี้ถ้ามีแต่ไมโครซอฟท์วินโดส์ อย่างเดียวโลกนี้คงเหงาพิลึก ความคาดหวังของผมแล้ว OpenGL ไม่ต้องเหนือกว่า Direct3D แต่ขอให้เทียบเท่าก็พอ เพราะสินค้าที่ผลิตมาเพื่อการพาณิชย์จากยักษ์ใหญ่ย่อมมีกำลังที่เหนือกว่า

เครดิต

  • เรื่อง OpenGL ที่เขียนมาเกือบทั้งหมดผมเรียบเรียงมาจาก http://openglbook.com/the-book/ เนื่องจากไม่มีวิทยาการที่ลึกซึ้งกับ OpenGL ผิดพลาดประการใดก็ขออภัยครับ