DirectX และ OpenGL

Download Report

Transcript DirectX และ OpenGL

DirectX และ OpenGL
หัวข้ อนำเสนอ
-บทนำ
-Games
-DirectX
ควำมสำมำรถ
ประวัติ วิวฒ
ั นำกำร
จุดดี จุดด้ อย
เกมที่ใช้ DirectX
-OpenGL
ควำมสำมำรถ
ประวัติ วิวฒ
ั นำกำร
จุดดี จุดด้ อย
เกมที่ใช้ OpenGL
-สรุป
www.themegallery.com
Company Logo
Intro
OpenGL และ DirectX ทั้ง 2 เป็ น Library สำคัญสำหรับใช้ ในกำรขึน้ รู ป 3 มิติ
หรือทำงำนด้ ำนภำพทีเ่ หมำะสมกับงำนได้ เกมเป็ นส่ วนแต่ OpenGL และ
DirectX ก็สำมำรถทำงำนด้ ำนอืน่ ๆได้ ด้วย เช่ นงำนภำพ 2 มิติ หรือ ฟังชั่น
DirectSound(หรือ Audio) DirectInput ของ DirectX สำมำรถทำงำนด้ ำน
กำรแปลงเสี ยง กำรทำให้ ระบบปฏิบัตกิ ำรสำมำรถทำงำนร่ วมกับ อุปกรณ์
อินพุตแปลกๆได้ นอกจำกนีย้ งั มีควำมสำมำรถเพิม่ เติมให้ เกิดควำมสวยงำม
เช่ น ควำมสำมำรถในกำรสร้ ำงเรำ กำรขึน้ รู ปนำ้ กำรแรนเดอร์ พนื้ ผิวนำ้ และ
งำนด้ ำนแสงต่ ำงๆเช่ น กำรกระทบของแสงในโลกจำลองที่ผ่ำนกำรขึน้ รูปด้ วย
OpenGL และ DirectX งำนด้ ำนภำพ 3 มิตนิ ี้ ยังนำไปใช้ สร้ ำงภำพยนตร์ 3 มิติ
หรือแบบจำลองในงำนออกแบบ งำนจำลองสถำนกำรจริงต่ ำงๆได้ อกี ด้ วย
www.themegallery.com
Company Logo
Games
เกมจำกยุคแรกๆทีเ่ กมใช้ งำนภำพจุดสี เพียง 8 bit รู ปแบบเกมมีค่อนข้ ำงจำกัด
เกมยังคงต้ องอำศัยจินตนำกำรในกำรเล่นเช่ น เกม text RPG ก่อนที่จะ
พัฒนำขึน้ เป็ น 16 32 bit ตำมจนกระทั้งเกม 2 มิตใิ ช้ งำนสี มำกกว่ ำ 256 สี เป็ นยุค
ทีม่ ี Library ช่ วยในกำรขึน้ รู ปเช่ น OpenGL เพือ่ เป็ นตัวช่ วยในกำรทำงำนขึน้
รู ปทีซ่ ับซ้ อนและใช้ เวลำในกำรทำงำนมำกขึน้ เพือ่ เป็ นตัวช่ วยลดเวลำ จำนวน
คน และควำมซับซ้ อน Library ดังกล่ำวจึงมีบทบำทขึน้ มำ ซึ่งบทบำทเหล่ำนีย้ งั
ส่ งต่ อไปถึงกำรขึน้ รู ป 3 มิตติ ่ อไป
อย่ ำงไงก็ตำมนอกจำก จำเป็ นตัวช่ วยในกำรขึน้ รู ปตัวเกมเองแล้ ว ยังเป็ นส่ วน
สำคัญในกำรทำ Engine เกม และ Editer หรือ ToolKit ในกำรทำเกมสำหรับมือ
สมัครเล่นหรือแฟนๆเกมที่สนใจในกำรดัดแปลงเกมของตน เพือ่ ควำมสะดวก
ง่ ำยแก่ควำมเข้ ำในกำรสร้ ำงเกมในแบบของตัวเองขึน้ มำทำให้ OpenGL และ
DirectX
www.themegallery.com
Company Logo
DirectX
DirectX เป็ นชุด library สำหรับจัดทำเกมบนระบบปฏิบตั ิกำรณ์วนิ โดว์ DirectX เป็ นรู ปแบบที่
รู้จกั กันดี ประกอบด้วยหัวข้อใหญ่ๆ 5 หัวข้อ
 DirectDraw มีควำมสำคัญมำกที่สุด เข้ำถึงกำร์ ด video ได้โดยตรงในระดับ bit เหมือนมี
ควำมสำมำรถเข้ำถึง store เบื้องต้นของ video card ได้โดยตรง ทำให้ทำงำนได้เร็ วขึ้น
 DirectSound ทำสื่ อทำงเสี ยงแบบผสมแฝงในระดับต่ำ และเสี ยงพื้นฐำนเปลี่ยนไปในระดับ
ที่เหมำะสม เช่น ระดับเสี ยง, ควำมก้องของเสี ยง, ควำมถี่เสี ยง
 DirectPlay ยอมให้เกมมัลติเพลเยอร์ (เกมสำหรับเล่นหลำยคน)ติดต่อกันโดยผ่ำนโมเด็ม,
ไม่ใช่โมเด็ม, LAN
 DirectInput เป็ นส่ วนที่ยอมให้รับ Input จำกอุปกรณ์ใดๆภำยนอกเช่น joysticks เข้ำถึง
windowได้
 Direct3D ประกอบด้วยส่ วนสำคัญ 2 ส่ วนใหญ่ๆ ได้แก่ Retained mode (โหมดจดจำ)
สำหรับ API ระดับสู ง เป็ นโปรแกรมประยุกต์ที่จดั เก็บ ข้อมูล Graphic และ Immediate
mode สำหรับ API ระดับต่ำ ที่ส่งผ่ำนข้อมูลอย่ำงเด่นชัดผ่ำนออกทำง execute buffer
www.themegallery.com
Company Logo
ประวัติ DirectX
หลังจำกกำรเปิ ดตัวของวินโดว์95 เกมส่ วนมำกนั้นยังคงทำมำเพื่อระบบdos อยู่
ไมโครซอฟจึงต้องกำรผูพ้ ฒั นำที่ยำ้ ยจำกระบบdos มำทำเกมบนวินโดว์
เพื่อที่จะให้วนิ โดว์เป็ นระบบที่เป็ นที่นิยมมำกขึ้น แต่วนิ โดว์น้ นั สนับสนุนระบบ
เกมได้ไม่ค่อยดีนกั เนื่องด้วยเลเยอร์ ที่ซบั ซ้อนจึงทำให้กำรเชื่อมต่อสู ้ฮำร์ ดแวร์
เสี ยงและภำพทำได้ชำ้ (เรื่ องน่ำสนใจอีกเรื่ องก็คือระบบ API นี้ได้ถกู ส่ งมำจำก
นักศึกษำคนหนึ่งซึ่ งทำขึ้นเพื่อเป็ นโปรเจ็กจบ แต่ไมผ่ำนเพรำะไม่ตรงตำมหัวข้อ)
พวกเขำจึงได้ดดั แปลงมันให้เป็ น mini-Graphics Library หรื อที่รู้จกั กันว่ำ Game
SDKซึ่ งพวกเขำก็คิดว่ำมันคือบทสรุ ปที่ดีสำหรับผูพ้ ฒั นำเกม แต่พวกเขำก็คิดผิด
ตอนหลังได้ถกู รู ้จกั กันในชื่อ DirectX 1.0 แต่กไ็ ม่ค่อยถูกยอมรับมำกนัก เพรำะ
มันทั้งช้ำ โครงสร้ำงไม่ดี อีกทั้งยังซับซ้อน ไมโครซอฟก็พฒั นำมันต่อ จนเริ่ มมี
คนยอมรับในเวอร์ ชนั่ 3 จนสำมำรถใช้งำนได้จริ งใน DirectX6 จนกระทั้ง เวอร์
ชัน่ 7 เป็ นรุ่ นที่ได้รับคำชมจำกผูใ้ ช้อย่ำงแพร่ หลำย
www.themegallery.com
Company Logo
วิวฒ
ั นำกำรของ DirectX
-DirectX 4 ไม่ถูกปล่อยออกมำใช้งำนจริ ง
-DirectX 6 เป็ นครั้งแรกที่ DirectX ก้ำวเข้ำสู่สงครำมเกม Platform DirectX เข้ำไปเป็ นส่ วน
หนึ่งของระบบปฏิบตั ิกำรณ์ Wimdows CE ในเครื่ อง Dreamcast ในยุคนี้มีผใู ้ ช้ DirectX มำก
ขึ้นในกำรพัฒนำเกม แต่ยงั คงไม่มำกเท่ำ OpenGL interface ของ DirectDraw ซึ่งไม่ได้
เปลี่ยนแปลงมำหลำยเวอร์ชนั่
-DirectX7 เป็ นเวอร์ชนั่ แรกที่ได้รับคำชมจำกทำงผูพ้ ฒั นำเกม มันทำงำนได้ดี กำรเขียน
โปรแกรมก็ทำได้ง่ำย และผูค้ นส่ วนใหญ่กช็ อบ interface ของมัน และตรงนี้นี่เองที่เป็ น
ผลสำเร็จครั้งใหญ่DirectX7 นอกจำกตัว DirectX เองแล้วนั้นได้รวมอีกสองอย่ำงเข้ำไปด้วยซึ่ง
ก็คือ DirectDraw และ Direct3D ถึง DirectDrawจะเป็ นแค่ระบบสองดีแต่มนั ก็มีขอ้ ดีเยอะมำก
และ Direct3D ก็สร้ำงมำเพื่อสนับสนุนDirectDrawinterface ของ DirectDraw ซึ่งไม่ได้
เปลี่ยนแปลงมำหลำยเวอร์ชนั่
-DirectX 8.0 เป็ นเวอร์ชนั่ ที่ทำง Microsoft ยอมทิ้ง Windows version เก่ำๆเช่น 95 เป็ น
DirectX ที่ใช้เปิ ดตัวสู่สงควำมเกมคอนโซลเต็มรู ปแบบ ของ Microsoft เองนั้นคือกำรใส่
DirectX 8.0 ลงใน XBOX เปิ ดขีดจำกัดกำรทำงำนที่โดน Windows เวอร์ชนั่ เก่ำๆยื้อไว้ เช่น
www.themegallery.com
Company Logo
วิวฒ
ั นำกำรของ DirectX
DirectX 8.0 ลงใน XBOX เปิ ดขีดจำกัดกำรทำงำนที่โดน Windows เวอร์ ชนั่
เก่ำๆยื้อไว้ เช่น
กำรเพิม่ ควำมสำมำรถใหม่ๆแก่ Direct3D กำรเพิม่ แล้วแก้ไข DirectShow และ
เพิ่ม DirectPlay เข้ำไปยัง DirectX
-DirectX 9.0 เป็ นรุ่ นที่ DirectX เริ่ มผูกขำดตลำดเหนือ OpenGL ด้วย
ควำมสำมำรถที่เหนือกว่ำกับกำรเปิ ดตัวที่อลังกำรของเกมยักใหญ่ที่ใช้
DirectX 9 เช่น DOOM ในเวอร์ ชนั่ 9c ทำให้ต้ งั แต่ปี 2004 เป็ นต้นมำ ค่ำย
พัฒนำเกมส่ วนใหญ่หนั มำใช้ OpenGL กัน และตั้งแต่ 9c เปิ ดตัว ได้มีกำร
ปรับปรุ งเป็ นประจำ จนกระทั้งถึงปี 2006 ,uกำรทำใช้ รู ปแบบของภำษำ XML
นำ DirectX ไปใช้ได้ ในบำงส่ วน ทำให้เกมเล็กๆก็เริ่ มใช้ DirectX มำกขึ้น
DirectX10 เป็ น DirectX ตัวใหม่ที่ออกมำโดยเสริ มควำมสำมำรถใหม่ๆของ
Window Vista
www.themegallery.com
Company Logo
ข้ อดี
มีควำมสำมำรถกำรทำงำนที่น่ำสนใจที่น่ำสนใจเช่น Programable Pixel , Vertex Shaders เป็ น
ต้น
-Direct3D นำเสนองำนโดยผ่ำน graphics hardware ที่มีบนระบบ
-DirectX ผ่ำนกำรนำเสนอที่ไม่ทำลำย code ในเวอร์ชนั่ เก่ำๆ
-มีจำนวน Code ที่ไม่ยำวเท่ำกับ OpenGL
ข้ อเสี ย
-DirectX จะอัพเดทรำยปี เท่ำนั้น ถือว่ำค่อนข้ำงช้ำ
-Direct3D นั้นต้องกำรกำรควำมรึ ควำมเข้ำใจค่อนข้ำงสูงใช้เวลำทำควำมเข้ำใจนำนกว่ำ
OpenGL
-กำรเขียนกม DirectX จะต้องทำใน ภำษำ C
-ใช้งำนได้เฉพำะบนระบบปฏิบตั ิกำร Windows เท่ำนั้น
www.themegallery.com
Company Logo
เกมที่ใช้ DirectX
เกมที่ใช้ DirectX หำได้ง่ำยมำในปั จจุบนั เนื่องจำก
ในช่วง 2-3 ปี ที่ผำ่ นมำควำมสำมำรถ DirectX9 นั้น
เป็ นที่นิยมกว่ำ OpenGL2.0 มำก ต่ำงจำกช่วง
DirectX รุ่ นแรกๆ เกมส่ วนใหญ่ที่ใช้ 3มิติเข้ำมำ
เนื่องจำกกำร์ด 3 มิติมีรำคำค่อนข้ำงแพงใน
ช่วงแรกๆ และ DirectX จำเป็ นต้องใช้
ควำมสำมำรถของกำร์ดในกำรทำงำน ทำให้
DirectX ยังไม่เป็ นที่นิยมมมำกนัก
เกมเด่นๆที่ใช้งำน DirectX ได้แก่ DOOM3 เป็ นเกมที่
เป็ นตัวแปลในกำรทำให้DirectX ถือครองตลำดอยู่
จนถึงปัจจุบนั
www.themegallery.com
Company Logo
OpenGL
OpenGL (Open Graphic Library) เป็ นส่ วนอ้ำงอิง(Library)สำหรับใช้งำนในโปรแกรม 2D
และ 3D กรำฟฟิ ค OpenGL เป็ นมำตรฐำนของส่ วนอ้ำงอิง(library) ด้ำน 3D Graphic มักจะ
ถูกเรี ยกใช้พร้อมกับโปรแกรมด้ำนเกม
เครื่ องมือช่วยของ OpenGL เป็ นรู ปแบบเฉพำะทำงที่ใช้ในปัจจุบนั OpenGL library ที่
เหมำะสำหรับ ผูจ้ ำหน่ำยหรื อผุใ้ ช้งำนที่แตกต่ำงกัน ตำมปกติแล้วจะขึ้นอยูก่ บั กำร์ด
แสดงผลด้ำน Graphic โดยผูจ้ กั จำหน่ำยจะจัดหำ เอกสำร library ที่มีส่วนประกอบ เฉพำะ
ของเครื่ องมือช่วยงำน OpenGL นั้นๆ เช่น บนระบบ Linux มี library เครื่ องมือช่วยงำน
OpenGL เรี ยกว่ำ libGL.so บนระบบ Linux
OpenGL ถูกใช้ในกำรวำด texture เป็ นหลักกำรที่ทำได้ง่ำยมำกๆที่ใครก็สำมำรถทำได้และคุณ
สำมำรถทำกำรประกอบหรื อวำด pixel 1 pixel และ bitmaps มำประกอบเข้ำด้วยกัน
www.themegallery.com
Company Logo
ประวัติควำมเป็ นมำของ OpenGL
OpenGL นั้นถูกเริ่ มพัฒนำ ขึ้นใน 1992 โดย Silicon Graphics เพื่อเป็ นสิ่ งที่ต่อเนื่องจำก
ระบบ API "Iris GL" ที่ใช้ใน UNIX ซึ่ งมันถูกสร้ำงขึ้นเป็ น Open standard (ไม่ใช่ open
source สำหรับคนที่ยงั เข้ำใจผิด)
และก็มีอยูบ่ นหลำย Platforms (ซึ่ งในตอนนี้คุณก็คงเข้ำใจแล้วว่ำ Open ในชื่อหมำยถึง
เปิ ด และ แน่นอน GL ก็มำจำก "Graphics Library")OpenGL นั้นถูกจับควบคุมจำก
Architecural Review Board (ARB)ARB เป็ นองค์กรประกอบขึ้นจำกหลำยๆบริ ษทั กรำฟ
ฟิ ค 3D Labs , Sgi, Apple, nVidia, ATI, Intel, id Software, รวมถึง Microsoft ด้วย
และด้วยกำร OpenGL เป็ นโปรแกรมแบบเปิ ดทำให้มีผพู้ ฒั นำอิสระซึ่งอำจจะเป็ นผูผ้ ลิต
เกมนำไปพัฒนำต่อได้ แต่อย่ำงไรก็ตำมต้องผ่ำนกำรยอมรับขององค์กรก่อนถึงจะถูกบรรจุ
ใน OpenGL อย่ำงเป็ นทำงกำร
www.themegallery.com
Company Logo
Version ต่ ำงๆของ OpenGL
OpenGL 1.1
OpenGL version 1.1 คือกำรแก้ไขปรับปรุ งครั้งแรกตั้งแต่ที่เวอร์ชนั ที่เป็ นต้นฉบับ 1.0 ถูก
ที่ปล่อยออกมำในวันที่1กรกฎำคม1992 Version 1.1 ซึ่ งเหนือกว่ำ Version 1.0, หมำยควำม
ว่ำโปรแกรมใดๆที่ทำงำนร่ วมกับกับ 1.0 GL จะสำมำรถทำงำนกับ 1.1 GL เหมือนเดิม มี
กำรเพิ่มควำมสำมำรถมำกมำยให้กบั GL, โดยเฉพำะควำมสำมำรถในกำร texture mapping
OpenGL 2.0
OpenGL เวอร์ชนั 2.0, ปล่อยให้ออกใช้งำน วันที่ 7 กันยำยน 2004 เป็ นกำรปรับปรุ งแก้ไข
ครั้งที่ 6 ตั้งแต่ เวอร์ชนั่ ต้นฉบับ เวอร์ชนั่ 1.0 เป็ นกำรเพิ่มครั้งใหญ่ เป็ นตัวเลขเวอร์ชนั่ หลัก
(ที่แสดงกำรสนับสนุนสำหรับ programmable shaders ระดับสูง)
www.themegallery.com
Company Logo
ข้ อดี
-
-
Open GL ทำงำนได้หลำยระบบปฏิบตั ิกำรณ์
OpenGL มีมีควำมสำมำรถที่ค่อนข้ำงกว้ำงเกิดจำกกำรพัฒนำควำมสำมำรถขึ้นเองจำก
ผูพ้ ฒั นำอิสระ
OpenGL ถูกใช้งำนในหลำยๆอย่ำง เสถียรภำพและกำรรองรับPlatform ในวงกว้ำง ได้ให้
ควำมสนใจแก้ผคู้ นที่ทำงำนด้ำนเทคโนโลยีนอกองค์กำรเกม OpenGL ยังถูกใช้ในกำรทหำร
กำรออกแบบสิ่ งก่อสร้ำงโดยคอมพิวเตอร์ กำรทำกรำฟฟิ ก3D และอื่นๆ
-มี โค๊ดที่เข้ำใจได้ง่ำย
ข้ อเสี ย
-ชื่อกำรเรี ยกใช้ควำมสำมำรถต่ำงๆไปสอดคล้องกับ ภำษำบำงภำษำทำให้เกิดควำมสบสนได้
-ตัวเสริ มใหม่ๆ เป็ นตัวเสริ มที่ผพู ้ ฒั นำอิสระพัฒนำขึ้นอำจจะมีผลกระทบตำมมำ
-มีจำนวน โค๊ดที่ค่อนข้ำงมำก
www.themegallery.com
Company Logo
เกมที่ใช้ OpenGL
OpenGL มีข้อได้ เปรี ยบ DirectX อยู่คือ
เป็ นผู้เปิ ดตลาดเข้ ามาก่อนทาให้ ค่อนข้ างเป็ น
ที่ยอมรับเป็ นเวลานานแม้ แต่ตอนที่ DirectX
เป็ นที่ยอมรับแพร่หลาย เนื่อง OpenGL
ทางานได้ ดีแม้ ไม่ใช่กบั เกม 3 มิติ ทางานได้
โดยไม่ต้องใช้ การ์ ดเสริมช่วยก็ยงั สามารถ
ทางานได้ ประกอบกับช่วงแรก Window มัน
ยังใหม่ไม่ได้ รับความนิยมและ OpenGL
ทางานได้ หลากหลายระบบปฏิบตั ิงานกว่า
OpenGL ยังคงมีการใช้ งานมาเรื่ อยๆเพราะ
ความสามารถนี ้เนื่องจากผู้พฒ
ั นาต้ องการให้
ผลิตภัณฑ์ของเขาได้ รับการใช้ ที่กว้ างมาก
ที่สดุ จนกระทั ้ง DirectX9 เริ่มเปิ ดตัว ทาให้
OpenGL ได้ ถกู ใช้ ลดน้ อยลงไป ตัวอย่างเกม
ที่ใช้ OpenGL คือ Diablo
www.themegallery.com
Company Logo
สรุป
ทั้ง DirectX และ OpenGL มีควำมสำมำรถในกำรใช้ งำนด้ ำนกรำฟฟิ คที่เป็ น
ทีย่ อมรับแม้ จะมีบำงช่ วงบำงรุ่ นที่ตัวใดตัวหนึ่งนั้นใช้ งำนได้ ไม่ เหมำะสมหรือ
มีปัญหำ แต่ กย็ งั มีอกี ตัวหนึ่งทีเ่ ป็ นตัวเลือกให้ ผ้ ูใช้ หรือพัฒนำนำไปพัฒนำ
ต่ อไปได้ และด้ วยควำมสำมำรถทั้งด้ ำนทีเ่ กีย่ วกับงำนด้ ำนภำพและงำนด้ ำน
อืน่ ๆ ทีจ่ ำเป็ นสำหรับกำรใช้ งำนไม่ จำเป็ นต้ องด้ ำนเกมยังสำมำรถนำไปประยุก
ใช้ งำนด้ ำนอืน่ ๆได้ อกี ด้ วย
ถึงแม้ เวลำจะผ่ำนไปกว่ ำ 10 ตั้งแต่ OpenGL เปิ ดตัว กับภำพ 3 มิตทิ ดี่ ูเรียบ
ง่ ำย ถ้ ำมำเทียบกับตอนนีแ้ ล้ วแทบจะเรียกได้ เลยว่ ำภำพในยุคแรกนั้นไม่ ต่ำง
จำกแท่ ง โพลีก้อน ธรรมดำๆ ทั้ง DirectX ยังคงพัฒนำต่ อไปเรื่อยๆช่ วงต้ นปี
2008 จะเปิ ดตัว รุ่ น 10.1 และ OpenGL ก็ประกำศทำเวอร์ ชั่นใหม่ เพื่อรองรับ
เกม แบบ nextgeneration แล้ ว สั กวันหนึ่งเกมทีเ่ รำเห็นอยู่นีอ้ ำจจะเป็ นเพียง
แท่ งวัตถุธรรมดำก็ได้ ถ้ำเทียบกับ ภำพของเกมในอนำคต
www.themegallery.com
Company Logo