API คืออะไร
ผมขออธิบายในภาษาชาวบ้านก็แล้วกันนะครับ API คือตัวที่กำหนดมาตรฐานการเชื่อมต่อ กับ Application ต่างๆ ครับ (หากงงก็ไม่เป็นไรครับ เดียวผมมีตัวอย่างให้ดู)
ตัวอย่าง
หากเรามี Application A และต้องการให้มันทำการเชื่อมต่อกับ Application B เราจะต้องทราบวิธีการเชื่อมของ Application B ว่ามีวิธีการอย่างไรบ้าง ซึ่งวิธีการเหล่านั้นเราเรียกว่า API นั้นเองครับ
ตัวอย่าง
เช่น หากเราเป็นนักพัฒนาเกม 3D และเราต้องการให้ กราฟิกชิพ (GPU) แสดง Effect ต่างๆออกมา เราก็ใช้ชุดคำสั่งที่อยู่ใน OpenGL หรือ Direct3D ไปสั่งให้ GPU แสดง Effect ออกมา ซึ่ง OpenGL และ Direct3D ก็คือ API ที่ใช้เชื่อมต่อระหว่าง เกม 3D และ GPU นั้นเองครับ
OpenGL และ Direct3D ต่างกันอย่างไร
1. ระบบปฏิบัติการที่รองรับ
a. OpenGL เป็น API เปิด สามารถให้ใช้ได้ทุกระบบปฏิบัติการ เช่น Wondows, UNIX, LINUX , Mac OS และอื่นๆ เป็นต้น
b. Direct3D เป็นส่วนหนึ่งของ DirectX ซึ่งเป็น API ของ Microsoft ดังนั้น Dircet3D จะสามารถใช้ได้บนระบบปฏิบัติการที่ Microsoft อนุญาตเท่านั้นซึ่งปัจจุบันนี้ ผมก็เห็นแต่ Windows เท่านั้นที่ใช้ Direct3D
2. จำนวนชุดคำสั่ง
ในระยะแรกๆนั้นจำนวนชุดคำสั่งที่ใช้ในการทำงาน 3D ของ OpenGL นั้นจะมีจำนวนชุดคำสั่งเยอะกว่า Dircet3D ครับ และ OpenGL ก็มีประสิทธิภาพในการทำงานมากกว่า Direct3D อีกด้วย ดังนั้นในสมัยก่อนเวลาทำงาน 3D ต่างๆ ไม่ว่าจะเป็น สร้างเกม 3D, การทำงานออกแบบ 3D Modeling ก็มักจะใช้ OpenGL ครับ แต่เมื่อเวลาผ่านมาจนถึงยุคที่มีการใช้ DirectX 9 จำนวนชุดคำสั่งที่อยู่ใน OpenGL และ Direct3D ก็เริ่มที่จะมีจำนวนพอๆกันแล้วครับ และDirectX 11 ที่กำลังจะออกมาในอนาคต ก็ทำท่าว่าจะเหนือกว่า OpenGL เสียด้วยครับ แต่ถึงอย่างไรก็ตามจุดแข่งของ OpenGL ก็คือ ตัว OpenGL นั้นสามารถใช้งานได้หลายระบบปฏิบัติการครับ Application 3D หลายตัวยังคงสนับสนุนการทำงานของ OpenGL อยู่ครับ
SGI (Silicon Graphics, Inc)
ในสมัยก่อนนั้น SGI เป็นบริษัทที่ผลิตเครื่องคอมพิวเตอร์ ชนิด Workstation ที่มีชื่อเสียงมากครับ SGI ผลิตทั้ง Hardwar และ Software ที่เกี่ยวกับงานกราฟฟิกครับ สมัยนั้นเครื่องคอมพิวเตอร์ของ SGI มีความโด่ดเดนทางด้านการนำไปใช้ในงานออกแบบกราฟฟิก 3D เป็นอย่างมากเลยครับ เรียกได้ว่า SGI เป็นที่ 1 ในวงการ 3D ในเวลานั้นเลยครับ
SGI เป็นผู้นำเทคโนโลยีหลายอย่างมาใช้เป็นรายแรกๆครับ เช่น
- SGI ได้สร้าง Geometry Engine ซึ่งเป็นหน่วยประมวลผลทางเลขาคณิต(Geomatry) ตัวแรกของโลกครับ ซึ่ง Geometry Engine นี้สามารถแบ่งเบาการทำงานของ CPU ในการประมวลผลกราฟฟิก 3D ลงไปได้มากเลยครับ ทำให้เครื่องคอมพิวเตอร์ของ SGI โดดเด่นในเรื่องการทำงานกราฟฟิกเป็นอย่างมากครับ
- ใช้เทคโนโลยีการประมวลแบบ 64 Bit เป็นรายแรก SGI ได้ใช้ซีพียูที่มีชื่อว่า R4000 ซึ่งเป็นซีพียูในตระกูล MIPS ครับ R4000 เป็นซีพียู RISC 64 bit ตัวแรก และในส่วนของระบบปฏิบัติการ SGI ใช้ระบบปฏิบัติการที่มีชื่อว่า IRIX 6.2 ซึ่งเป็นระบบปฏิบัติการที่รองรับการประมวลผลแบบ 64 bitเติมรูปแบบตัวแรก (IRIX เป็นระบบปฏิบัติการที่ SGI พัฒนามาจาก UNIX อีกทีนึงครับ)
- SGI ได้สร้าง API สำหรับงานกราฟฟิกขึ้นมาโดยใช้ชื่อว่า IRIS GL แต่เจ้า IRIS GL นี้มันใช้งานได้ยากมากเลยครับ ทาง SGI จึงได้นำ IRIS GL มาแก้ไขใหม่ให้ใช้งานได้ง่ายขึ้น และมีประสิทธิภาพมากขึ้น และได้ตั้งชื่อให้ใหม่ว่า OpenGL และหลังจากนั้นมา OpenGL ก็กลายเป็น API สำหรับงานกราฟฟิก 3D ที่นิยมใช้มากสุดในการทำงาน 3D ครับ
ในระยะเวลาต่อมาประสิทธิภาพในการทำงานด้านกราฟฟิกในเครื่อง PC มีมากขึ้นเรื่อยๆ จนมีความใกล้เคียงกับเครื่อง WorkStation ที่ SGI กำลังทำตลาดอยู่ SGI จึงได้เปลี่ยนเป้าหมายไปทำเครื่องคอมพิวเตอร์ ชนิด Server แทนครับ เพราะหากยังอยู่ในตลาด WorkStation ต่อไปคงต้องตายแน่ๆ และผู้เชี่ยวชาญทางด้านกราฟฟิกของ SGI ต่างก็ลาออกจาก SGI มาอยู่กับทาง ATI และ NVIDIA ครับ
เมื่อ SGI เปลี่ยนจากตลาด WorkStation มาทำตลาด Server ทาง SGI ก็ได้เปลี่ยน Logo ตัวเองจาก SGI มาเป็น sgi ครับ (SGI -----> sgi)
ปัจจุบันนี้ SGI ยังคงจำหน่ายคอมพิวเตอร์ Server อยู่
ส่วนตัวของ OpenGL นั้นก็ยังได้รับการสนับสนุนต่อไปเรื่อยๆจากทาง SGI และ Khronos Group (ซึ่งประกอบไปด้วยบริษัทต่างเช่น Google, Blizzard, Orange, LG, Mitsubishi Electric, Panasonic และอื่นๆอีกมากหมาย)
ว่าแล้วก่อนไปหัวข้อต่อไปเราลองมาดูรูปร่างหน้าตาของเครื่อง SGI ในสมัยก่อนกันดีไหมครับ
ภาพด้านบน หน้าตา ถายนอกของเครื่อง Workstation SGI Onyx RE2
ภาพด้านบน บอร์ดใส่ CPU พร้อมแรม 1 GB (คิดดูนะครับในปี 1993(พ.ศ. 2536) แรม 1 GB มันจะมีค่าขนาดไหน (ในเครื่องนี้ยังมีบอร์ดใส่ CPU และแรมอื่นๆอีกน่ะครับ อันนีเอามาให้ดูแค่อันเดียวพอเป็ตัวอย่าง)
ภาพด้านบน นี้และครับ Geometry Engine ของ SGI ที่ช่วยในการประมวลผลทางด้านเลขาคณิต (โครงสร้าง 3D ส่วนมากมักเป็นรูปทรงเลขาคณิต)ครับ
ภาพด้านบน นี้ก็คือ Raster Manager (หลังที่สร้างโครงสร้าง 3D หรือ Model 3D เสร็จแล้วเราก็ต้อง Render ภาพออกมาเป็น 2D ในรูปแบบของ Raster (Raster คือข้อมูลที่เป็นจุดๆ 1จุด ต่อ 1 pixel))
ภาพด้านบน Display Generator(การ์ดจอนั้นแหละครับท่าน) เป็นไงครับ HD4870X2 ดูตัวเล็กไปเลยใช่ไหมครับ
และในเครื่องนี้ยังบอร์ดอีกๆหลายบอร์ดที่ผมยังไม่ได้เอารูปมาให้เพื่อนๆดูครับ ส่วนราคาของเครื่องที่เพื่อนๆเห็นอยู่ในอดีต(1993) ราคาอยู่ที่ $750,000 (สมัยนั้น 1 USD เท่ากับ 25 บาทครับ)
3DLabs
เราก็รู้ดีอยู่แล้วว่าในสมัยก่อนนั้น OpenGL มีชุดคำสั้งที่ใช้ในการทำงาน 3D เยอะกว่า Direct3D มาก ดังนั้นคนที่ทำงานด้าน 3D เช่น โปรแกรมจำพวก CAD และ CAM ต่างๆ ก็ต้องการการ์ดจอที่มีความโดดเด่นทางด้าน OpenGL เป็นพิเศษครับ และ 3DLabs ก็คือผู้เชี่ยวชาญทางด้าน OpenGL ตัวจริงเสียด้วยสิ
3DLabs ก็มีบทบาทเป็นอย่างมาก กับการให้ความช่วยเหลือในการพัฒนา OpenGL ครับ โดยเฉพาะตอนที่ DirectX 9 ที่มาพร้อมกับ HLSL ซึ่งเป็นภาษาระดับสูงสำหรับเขียน Shader (หรือ เป็นการเขียนโปรแกรมควบคุม GPU นั้นเองครับ) การมาถึงของ HLSL นั้นเรียกได้ว่าแทบจะจะทำให้ OpenGL หมดทางสู้เลยก็ว่าได้นะครับ แต่และแล้วพระเอกขี่หม้าสีทองก็เข้ามาช่วย OpenGL ไว้ได้ทันเวลา พระเอกผู้นั้นก็คือ 3DLabs ครับ 3DLabs ได้สร้าง GLSL ขึ้นมา โดย GLSL นี้ก็คือภาษาสำหรับเขียน Shader ของทางฝั่ง OpenGL นั้นเองครับ
GLSL นี้ทำให้ OpenGL สามารถต่อกรกับ DirectX 9 ที่มี HLSL ได้เป็นอย่างดีเรียกว่าสูสีกันมากๆเลยครับ
สาเหตุที่ 3DLabs ต้องเข้ามาช่วย OpenGL เอานั้นก็เพราะว่าการ์ดจอของ 3DLabs นั้นหากินกับ OpenGL นั้นเองครับ
3DLabs เจ้าพอแห่งวงการ Profressional Graphices
เราจะมาดูกันน่ะครับว่า 3DLabs ที่ได้ฉายาว่า "เจ้าพอแห่งวงการ CAD/CAM" นั้นมีการจออะไรที่หน้าสนใจบ้างนะครับ
ดูจากฉายาของ 3DLabs แล้วเชื่อว่าหลายท่านคงสามารถรู้ได้ว่าการ์ดจอของ 3DLabs นั้นต้องออกแบบมาสำหรับการทำงาน 3D มากกว่าที่จะเอามาเล่นเกมแน่นอน
และการทำงาน 3D ส่วนในอดีตจนถึงปัจจุบันก็ยังคงนิยมใช้ OpenGL กันเป็นส่วนมากอยู่ครับ
เรามาดูการ์ดจอตัวแรกของ 3DLabs กันดีกว่าครับ
ในปี 1994 3DLabs GLINT 300SX ที่ 3DLabs เป็นผู้ออกแบบชิพ และให้ทาง IBM เป็นผู้ผลิตชิพ GLINT 300SX นั้นจะถือว่าเป็นการ์ดจอตัวแรกที่รวมระบบการประมวลผล 2Dและ3D ทั้งหมดไว้บนการ์ดเพียงเดียวก็ได้(หากเทียบเจ้าตัวที่อยู่ด้านบนแล้ว 3DLabs GLINT ยังถือว่าเล็กกว่าเยอะครับ) GLINT 300SX ถูกออกแบบมาให้ทำงานกับ OpenGL โดยเฉพาะครับ แต่ 3DLabs GLINT 300SX ออกแบบมาสำหรับใช้งานกับเครื่อง WorkStation โดยเฉพาะทำให้การ์ดตัวนี้มีราคาแพงมาก แต่ก็ยังขายได้เพราะประสิทธิภาพที่ได้มานั้นถือว่าคุ้มมากครับ
ภาพ 3DLabs GLINT 300SX
ในปี 1995 3DLabs ได้ทำชิพราคาถูกออกมาชื่อ Gigi สำหรับขายผู้ใช้งานในระดับทั่วไป(สำหรับตลาด PC) ซึ่งประสิทธิภาพที่ได้จะด้อยกว่าชิพในตระกูลที่ 3DLabs ทำออกมาสำหรับตลาด WorkStation
ช่วงปลายปี 1995 กราฟฟิกชิพในตลาดระดับ PC เริ่มมีออกมามากขึ้นเรื่อยๆ 3DLabs จึงได้นำ Gigi มาพัฒนาต่อเป็น Permedia
3DLabs Permedia มีคู่แข่งคือ 3Dfx Voodoo, ATI Rage, S3 VIRGE 3D และ PowerVR PCX
ในเรื่องการเล่นเกม Permedia นั้นอยู่ระดับที่เรียกว่าดี แต่ยังไม่ดีที่สุด(แพ้ Voodoo) แต่ถ้าในแง่ของการทำงาน 3D ที่มีการใช้ OpenGL เป็นหลัก เช่นงานออกแบบจำพวก CAD/CAM นั้น ไม่ชิพกราฟฟิกตัวไหนสามารถเอาชนะ Permedia ได้เลย (เพราะการ์ดจอที่ใช้ชิพ 3DLabs Pemedia นั้นจะต้องมีชิพ 3DLabs GLINT Delta สำหรับการคำนวนเลขาคณิต(Geometry) ติดมาด้วยนั้นเองครับ)
และแทนที่ Permedia จะได้รับความนิยมในตลาดเกม แต่กลับได้รับความนิยมในตลาด Workstation เป็นอยากมาก นั้นเพราะ Permedia นั้นมีราคาถูกมากหากเทียบกับการ์ดจอต่างๆที่มีอยู่ในระดับ Workstation ในเวลานั้นด้วยเหตุนี้ Permedia จึงเป็นการ์ดจอ Low-cost OpenGL ตัวแรกครับ
ภาพ 3DLabs Permedia
เกร็ดความรู้ : S3 VIRGE 3D ได้รับสมยานามว่า Graphice De-accelerator
ในช่วงปี 1996 3DLabs ได้ออกชิพ Permedia2 ซึ่งเป็นชิพกราฟฟิกตัวแรกที่มีการ integrade หน่วยประมวลผลทางด้าน Geometry เข้าไปไว้ในชิพตัวเดียวกับกราฟฟิกชิพ ได้สำเร็จเป็นตัวแรก สำหรับคู่แข่งของ Permedia2 นั้นได้แก่ NVIDIA RIVA 128, ATI RAGE PRO, Matrox Millenium II, PowerVR PCXII, Number Nine Ticked to Ride, 3dfx Voodoo และ 3dfx Voodoo Rush
ภาพการ์ดจอ Diamond FireGL Pro1000 ซึ่งใช้ชิพกราฟฟิก 3DLabs Permedia2
ภาพข้างบน เกม Motoracer ที่ได้จาก 3dfx Voodoo (คลิกรูป ดูภาพใหญ่)
ภาพข้างบน เกม Motoracer ที่ได้จาก 3Dlabs Permedia2 สังเกตุที่การเกรียสีบนพื้นถนนจะทำได้ไม่เนียนเท่า 3dfx Voodoo (คลิกรูป ดูภาพใหญ่)
สำหรับการทดสอบ Direct3D 3DLabs Permedia2 (Diamond FireGL 1000 Pro) ยังทำได้ไม่ดีนัก
สำหรับในการทดสอบ ที่มีการใช้งาน OpenGL นั้นไม่มีชิฟกราฟฟิกตัวใดเทียบชั้นกับ 3DLabs Pemedia2(Diamond FireGL 1000 pro)ได้เลยครับ
ปี 1998 3DLabs ได้ออกการ์ดจอ 3DLabs Pemedia 3 Creat! ซึ่งเป็นการ์ดจอระดับ Low-Cost ตัวสุดท้ายของ 3DLabs และก็เช่นเคยครับ การ์ดของ 3DLab นั้นเหมาะกับการ์ทำงาน 3D กับ OpenGL มากกว่า ที่จะเอามาเล่นเกม ดังนั้นหลังจากการ์ดรุ่นนี้แล้ว 3DLabs ก็หายไปจากวงการการ์ดจอสำหรับเล่นเกมเป็นเวลานานเลยครับ
ภาพ การ์ดจอ 3DLabs Permedia
สำหรับการเล่นเกม 3DLabs ก็ยังทำได้ไม่ดีเช่นเคย
แต่ในการทำงาน 3D นั้น 3DLabs ก็ยังคงเป็นการ์ดที่ใช้เวลาในการ Render น้อยที่สุดอยู่ดีครับ
หลังจากที่ Permedia 3 Create ไม่ประสบความสำเร็จในตลาดเกม 3DLabs จึงได้รู้ตัวชิพกราฟฟิกของตนนั้นเหมาะกัยการทำงานมากกว่า การที่จะนำมาเล่นเกม 3DLabs จึงยอมวางมือจากตลาดเกม และมุ่งทำตลาด WorkStation อย่างเดียว
ต่อมาเมื่อ NVIDIA ประสบความสำเร็จเป็นที่ 1 ในตลาดเกมด้วยชิพ GeForce 256 ทาง NVIDIA ได้นำชิพตัวนี้ไปปรับแต่งให้เป็นชิพกราฟฟิกระดับ WorkStation โดยใช้ชื่อว่า Quadro เตรียมบุกตลาดสำหรับคนทำงาน 3D ที่ทาง 3DLabs ครอบครองอยู่
*หมายเหตุ ชิพ NVIDIA Quadro บางตัวก็ไม่ได้เกิดจากการปรับแต่งชิพ GeForce น่ะครับ เพราะว่าชิพ Quadro บางรุ่นก็ถูก NVIDIA ออกแบบมาให้เป็น Quadro โดยกำเนิดก็มีครับ
แม้ในตลาดเกมจุดเด่นของ NVIDIA จะอยู่ที่คุณสมบัติ T&L ซึ่งมีอยู่ในตัว GeForce 256
แต่จุดของ NVIDIA ตรงนี้กลับไม่ใช่สิ่งใหม่เลยในตลาด Workstation นั้นเพราะชิพ GLINT Gamma ซึ่งเป็นชิพประมวลผลทาง Geometry ของ 3DLabs นั้นก็มีคุณสมบัติ T&L เช่นกัน
และทาง 3DLabs ก็โจมตี Quadro ว่าการที่ Quadro ใช้ชิพเพียงตัวเดียวทำงานทั้งการ Render และคำนวณทาง Geometry นั้น จะมีประสิทธิภาพในการทำงานสู้ การ์ดจาก 3DLabs ที่ใช้ชิพ เฉพาะทางในการทำงานแต่ละด้านไม่ได้ (แม้ใน Permedia 2 และ 3 ซึ่งเป็นการ์ดจอ Low-cost จะใช้ชิพเพียงตัวเดียวทำงานทุกอย่าง แต่การ์ดในระดับ WorkStation ทาง 3DLabs ยังคงใช้ชิพต่างๆแยกกัน เพื่อแบ่งกันประมวลผลในแต่ละด้าน เช่นการ Render ก็จะใช้ชิพตัวนึง และการคำนวณทาง Geometry ก็จะใช้ชิพอีกตัวหนึ่ง)
ทีนี้เราลองมาดูกันสิ ว่าแนวความคิดของ NVIDIA และ 3DLabs ใครจะดีกว่ากัน
3DLabs Oxygen GVX1 ประกอบด้วยชิพ 2 ตัว ตัวที่อยู่ข้างบนคือ GLINT R3 ทำหน้าที่ในการ Render และตัวที่อยู่ด้านล้างคือ GLINT Gamma G1 สำหรับคำนวน Geometry (รวมถึง T&L เพราะการประมวลผล T&L ถือว่าเป็นการทำงานทาง Geometry อย่างนึงครับ)
3DLabs Oxygen GVX210 ประกอบด้วยชิพ 3 ตัว ตัวที่มีพัดลม 2 ตัว คือ GLINT R3 ทำหน้าที่ในการ Render และตัวที่ใช้ sink สีดำ ไม่มี คือ GLINT Gamma G2 สำหรับคำนวน Geometry
Diamond FireGL 1Pro ใช้ชิพ IBM Rasterizer 256 bit (เป็นชิพที่ทำหน้าที่ Render ภาพอย่างเดียว)
E&S รุ่น Lighting 1200 มีชิพ 3 ตัว ตัวที่อยู่ใกล้ๆกับ D-sub คือ Ramdac ครับ(ของผู้ผลิตรายอื่นๆเขายัด Ramdac รวมไว้ในชิพตัวเดียวกับชิพที่ทำหน้าที่ Render ภาพกันหมดแล้ว) ส่วนตัวที่มีพัดลม คือชิพที่ทำหน้าที่คำนวณ Geometry ส่วนตัวที่อยู่ด้านบนของตัวที่มีพัดลมคือชิพที่ทำหน้าที่ Render ภาพ
Elsa GLoria II ใช้ชิพ NVIDIA Quadro ชิพเดียวทำได้หมดทุกอย่าง
งานนี้เรียกได้ว่า เจ้าพ่อแห่งวงการกราฟฟิกระดับ WorkStation โดนน้องใหม่อย่าง NIVIDIA Quadro อัดเหละเลยครับ แต่ศึกนี้ยังไม่จบ
O
0 ความคิดเห็น:
แสดงความคิดเห็น