Apple Metal API คืออะไร NVIDIA GPU พร้อมสำหรับ Vulkan API แล้ว

API (Application Programming Interface) ช่วยให้นักพัฒนาฮาร์ดแวร์และซอฟต์แวร์สามารถสร้างไดรเวอร์และโปรแกรมที่ทำงานได้เร็วขึ้นบนแพลตฟอร์มที่หลากหลาย ไดรเวอร์ซอฟต์แวร์ได้รับการออกแบบมาให้โต้ตอบกับ API โดยตรง แทนที่จะโต้ตอบกับระบบปฏิบัติการและซอฟต์แวร์

ปัจจุบันมี API กราฟิกสองตัว ได้แก่ OpenGL (SGI) และ Direct 3D (Microsoft)

แม้ว่าผู้ผลิตอะแดปเตอร์วิดีโอจะรองรับมาตรฐาน OpenGL บริษัทไมโครซอฟต์ให้การสนับสนุน Direct3D สำหรับ API ที่ครอบคลุมมากขึ้นที่เรียกว่า DirectX

DirectX 9 ขึ้นไปเป็นอินเทอร์เฟซซอฟต์แวร์เวอร์ชันล่าสุด ซึ่งขยายการรองรับกราฟิก 3D และมอบความสามารถในการเล่นเกมที่ได้รับการปรับปรุง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ DirectX หรือดาวน์โหลดเวอร์ชันล่าสุด โปรดเยี่ยมชมเว็บไซต์ DirectX ของ Microsoft: www.microsoft.com/directx

CrossFire หรือ sli

เพื่อตอบสนองต่อการพัฒนาและส่งเสริมเทคโนโลยี SLI รุ่นเก่า (MK No. 30(357) 2005) โดย NVIDIA ซึ่งเป็นคู่แข่งหลักในตลาดตัวเร่งวิดีโอ ATI ได้พัฒนาและปรับใช้โซลูชันที่คล้ายกันของตัวเอง - เทคโนโลยี CrossFire เช่นเดียวกับ SLI จาก NVIDIA ช่วยให้คุณสามารถรวมทรัพยากรของการ์ดแสดงผลสองตัวในคอมพิวเตอร์เครื่องเดียวเข้าด้วยกัน ซึ่งจะช่วยเพิ่มประสิทธิภาพของระบบย่อยวิดีโอ เทคโนโลยี CrossFire นั้นแตกต่างโดยพื้นฐานจาก SLI และดังนั้นจึงมีความเหมือนกันกับคู่แข่งเพียงเล็กน้อย เมื่อพิจารณาถึงข้อได้เปรียบบางประการของเทคโนโลยีใดเทคโนโลยีหนึ่ง ในอนาคตอันใกล้นี้ ผู้ใช้จะเลือกระหว่าง NVIDIA และ ATI ไม่เพียงแต่ขึ้นอยู่กับความคิดเห็นเกี่ยวกับแบรนด์ที่ก่อตั้งขึ้นในช่วงหลายปีที่ผ่านมา แต่ยังขึ้นอยู่กับข้อเท็จจริงเกี่ยวกับเทคโนโลยี SLI หรือ CrossFire ด้วย

ฐานทางเทคนิค

โดยการเปรียบเทียบกับ NVIDIA ในการวางการ์ดแสดงผล ATI สองตัวไว้ใน "สายรัด" เดียวคุณจะต้องใช้มาเธอร์บอร์ดที่มีชิปเซ็ตจากผู้ผลิตรายเดียวกัน (ชิปเซ็ต Intel i975X ได้รับการวางแผนที่จะรองรับ CrossFire ด้วย) โดยมีสอง สล็อต PCIด่วน. เช่นเดียวกับ SLI CrossFire ต้องการทรัพยากรระบบซึ่งจะต้องใช้แหล่งจ่ายไฟคุณภาพสูง มาดูรายละเอียดความต้องการของระบบกันดีกว่า

เมนบอร์ด.แม่จะต้องใช้ชิปเซ็ต ATI Radeon Xpress 200 CrossFire- บอร์ดเหล่านี้มีจำหน่ายสำหรับทั้งโปรเซสเซอร์ AMD Sempron/Athlon 64 และ Intel Pentium 4/Celeron ดังนั้นตอนนี้ ATI จะทำเงินจากชิปเซ็ตซึ่งก่อนหน้านี้การผลิตยังไม่ถึงขนาดใหญ่

การ์ดแสดงผลเพื่อให้เทคโนโลยีทำงานได้ คุณต้องมีมาสเตอร์การ์ด CrossFire (ดูข้อมูลเพิ่มเติมด้านล่าง) และการ์ดแสดงผลอื่นๆ ที่ใช้ชิปในตระกูลเดียวกันกับการ์ดโฮสต์ สิ่งที่ทำให้มาสเตอร์การ์ดแตกต่างจากการ์ดอื่นคือการมีตัวเชื่อมต่อ DMS-59 (เชื่อมต่อกับ DVI บนการ์ดสเลฟ) ชิป CrossFire และแน่นอนว่ามีราคา

หน่วยพลังงานเพื่อรักษาชุดที่จริงจังเช่นนี้ คุณจะต้องมีแหล่งจ่ายไฟที่มีกำลังขั้นต่ำ 400–450 W โดยควรเป็นแหล่งจ่ายไฟที่ทรงพลังกว่า

นั่นคือทั้งหมดที่คุณต้องมีในการประกอบระบบวิดีโอ ครอสไฟร์- ดังที่คุณสังเกตเห็นว่า ATI มีความยืดหยุ่นกับลูกค้ามากขึ้นโดยไม่ได้ผูกมัดพวกเขาเหมือนที่ดินในฟาร์มรวมกับการซื้อการ์ดสองใบด้วยชิปเดียวกันจากผู้ผลิตรายเดียวกัน การเชื่อมโยงจะดำเนินการเฉพาะกับตระกูลชิปวิดีโอที่ใช้ตัวเร่งความเร็วเท่านั้น นั่นคือคุณสามารถซื้อตัวเร่งความเร็ววิดีโอ Radeon X800 ชั้นนำและ Radeon X800 XL ที่เป็นทาสได้ Master Radeon X800 จะเข้ากันได้กับการ์ดจากผู้ผลิตทุกรายโดยขึ้นอยู่กับการดัดแปลงชิป X800 นี่เป็นข้อได้เปรียบเหนือคู่แข่งอย่างแน่นอน - หากคุณใช้คันเร่งเพียงตัวเดียวโดยมีโอกาสที่จะได้รับการปรับปรุงให้ทันสมัยยิ่งขึ้นด้วยการติดตั้งการ์ดแสดงผลอีกตัว คุณจะไม่ต้องค้นหาการ์ดจากผู้ผลิตรายใดรายหนึ่งโดยใช้ชิปเฉพาะ บน ในขณะนี้เทคโนโลยี CrossFire รองรับโดยการ์ดแสดงผลที่ใช้ X800 และ X850 รวมถึงผลิตภัณฑ์ใหม่ที่ใช้ X1xxx

มีมากขึ้น ระดับสูงการบีบอัดมากกว่ารูปภาพที่มีองค์ประกอบดังกล่าวน้อย (เช่น กราฟ ไดอะแกรม พื้นผิวธรรมดา) ภาพความละเอียดสูงสามารถบีบอัดได้ที่อัตราการบีบอัดสูงโดยไม่กระทบต่อคุณภาพของภาพ เพื่อบันทึก คุณภาพสูงสำหรับภาพความละเอียดต่ำ อัตราการบีบอัดขั้นสุดท้ายควรต่ำกว่ามาก รูปภาพที่มีความลึกของสีสูง (เช่น รูปภาพ Truecolor 24 บิต) จะถูกบีบอัดอย่างมีประสิทธิภาพมากกว่ารูปภาพที่มีบิตต่อพิกเซลน้อยกว่า (เช่น ระดับสีเทา 8 บิต)

วิธีการบีบอัดแบบสูญเสียอื่น ๆ ส่วนใหญ่มีลักษณะสมมาตร ซึ่งหมายความว่าการดำเนินการเหล่านี้จะขึ้นอยู่กับการใช้ลำดับการดำเนินการเฉพาะ ซึ่งดำเนินการในลำดับย้อนกลับเมื่อแกะบรรจุภัณฑ์ การบีบอัดและคลายการบีบอัดข้อมูลใช้เวลาประมาณระยะเวลาเท่ากัน การบีบอัดแฟร็กทัลเป็นกระบวนการที่ไม่สมมาตร การบีบอัดจะใช้เวลานานกว่าการบีบอัด ข้อมูลที่ถูกบีบอัดแบบแฟร็กทัลจะมีประโยชน์ในกรณีที่ไฟล์รูปภาพมักถูกคลายการบีบอัดแต่ไม่เคยถูกบีบอัด เช่น เมื่อจัดเก็บรูปภาพในฐานข้อมูลกราฟิกบนซีดีรอม

แบบฟอร์มที่พบบ่อยที่สุดบางรูปแบบจะมีการพูดคุยสั้นๆ ด้านล่างนี้:

GUI API สมัยใหม่

การพัฒนาคอมเพล็กซ์ที่ทันสมัย โปรแกรมกราฟิกโดยเฉพาะแอปพลิเคชัน 3D มีการเชื่อมโยงอย่างแยกไม่ออกด้วย โดยใช้ API-อินเทอร์เฟซ

(อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน)

API คือชุดของไลบรารีที่แสดงถึงอินเทอร์เฟซสำเร็จรูปสำหรับโปรแกรมที่จะทำงานกับตัวเร่งความเร็ว 3 มิติ ปัจจุบันคล้ายกันใน-

มีอินเทอร์เฟซค่อนข้างมาก แต่ทั้งหมดสามารถแบ่งออกเป็นสองคลาส: สากลและเฉพาะทาง

Universal API นั้นเป็นเรื่องปกติสำหรับตัวเร่งความเร็ว 3 มิติและการสนับสนุนทั้งหมด การเร่งความเร็วด้วยฮาร์ดแวร์สำหรับ API เหล่านี้เป็นความรับผิดชอบของตัวเร่งความเร็วเอง ก่อนอื่นเราควรเน้น Microsoft DirectX และ OpenGL ทั้งสองใช้เป็นหลักในโปรแกรมคอมพิวเตอร์แอนิเมชั่น

API เฉพาะทางได้รับการออกแบบมาเพื่อทำงานร่วมกับตัวเร่งกราฟิกที่สร้างขึ้นบนชิปเซ็ต 3D เฉพาะ ที่มีชื่อเสียงที่สุด ได้แก่ Glide API - อินเทอร์เฟซสำหรับการทำงานกับชิปVooDoo® Metal - สำหรับชิป Savage3D เป็นต้น โปรแกรมที่เขียนโดยใช้ API พิเศษจะทำงานเฉพาะกับตัวเร่งความเร็วที่สร้าง API เหล่านี้เท่านั้น API พิเศษส่วนใหญ่มีเพียงอินเทอร์เฟซการเขียนโปรแกรมระดับต่ำเท่านั้น เมื่อเร็วๆ นี้, ใหม่ เวอร์ชัน DirectXรวมถึงอินเทอร์เฟซการสนับสนุนระดับสูงเช่น DirectX สำหรับ VisualBasic ซึ่งให้การสนับสนุนภาษาสำหรับแอปพลิเคชันมัลติมีเดียที่เขียนในสภาพแวดล้อม VisualBasic การเขียนโปรแกรมด้วยภาพขั้นพื้นฐาน

ไมโครซอฟต์ DirectX API

Microsoft DirectX API คือชุดของอินเทอร์เฟซการเขียนโปรแกรมที่ใช้ในการแก้ปัญหา งานต่างๆ: จาก การควบคุมโปรแกรมฮาร์ดแวร์คอมพิวเตอร์ก่อนการพัฒนา แอปพลิเคชั่นมัลติมีเดียการใช้ข้อมูลประเภทต่างๆ และสร้างโลกเสมือนจริง

เป้าหมายหลักที่ Microsoft ดำเนินการเมื่อสร้างอินเทอร์เฟซ DirectX คือการทำให้คอมพิวเตอร์ทำงาน ระบบวินโดวส์ให้เป็นแพลตฟอร์มสากลสำหรับแอพพลิเคชั่นที่อุดมไปด้วยองค์ประกอบมัลติมีเดีย: กราฟิกสีเต็มรูปแบบ, ชิ้นส่วนวิดีโอ,

tami แอนิเมชั่น 3 มิติและเสียงสเตอริโอ สร้างขึ้นโดยตรงในเคอร์เนลระบบปฏิบัติการ อินเตอร์เฟซวินโดวส์ DirectX เป็นบริการแบบครบวงจร

วินโดวส์ 98 และวินโดวส์ 2000 และไมโครซอฟต์ อินเทอร์เน็ตเอ็กซ์พลอเรอร์- ส่วนประกอบ

สามารถดาวน์โหลด DirectX ลงคอมพิวเตอร์ของคุณโดยอัตโนมัติเมื่อติดตั้งเกมสมัยใหม่และแอพพลิเคชั่นมัลติมีเดียที่พัฒนาขึ้นสำหรับ Windows 95 สำหรับนักพัฒนา DirectX มีชุดอินเทอร์เฟซซอฟต์แวร์ซึ่งช่วยให้คุณสามารถแก้ไขปัญหาหลักสองประการได้

ขั้นแรก DirectX จะเปลี่ยนแอพพลิเคชั่นที่พัฒนาให้เป็นโปรแกรมที่เข้ากันได้กับ Windows เวอร์ชันใดก็ได้ และทำงานบนคอมพิวเตอร์ทุกเครื่องที่ติดตั้งระบบปฏิบัติการนี้ โดยไม่คำนึงถึงประเภทของคอมพิวเตอร์ที่ใช้ ซอฟต์แวร์- ในเวลาเดียวกัน แอปพลิเคชันที่คล้ายกันใช้ประโยชน์สูงสุดจาก ความสามารถทางเทคนิคคอมพิวเตอร์ให้ ประสิทธิภาพสูงสุด- นี่คือความสำเร็จผ่านบริการที่มีให้โดยสองหลัก ส่วนประกอบ DirectX: อินเทอร์เฟซระดับต่ำที่เป็นส่วนหนึ่งของ DirectX Foundation และอินเทอร์เฟซระดับสูงที่ประกอบเป็น DirectX Media

ประการที่สอง DirectX ช่วยให้นักพัฒนาสามารถสร้างสรรค์นามธรรมได้ ประเภทเฉพาะการ์ดแสดงผล การ์ดเสียง หรือตัวเร่งความเร็ว 3 มิติ และเน้นไปที่ตรรกะของโปรแกรมนั่นเอง

DirectX Foundation มอบชุดอินเทอร์เฟซการเขียนโปรแกรมระดับต่ำให้กับนักพัฒนา การเข้าถึงที่มีประสิทธิภาพถึงความสามารถทั้งหมดของคอมพิวเตอร์ที่ใช้ OS Windows ซึ่งนำไปใช้ในระดับ ฮาร์ดแวร์– ตัวเร่งความเร็ว 3 มิติ การ์ดเสียง,อุปกรณ์ป้อนข้อมูล ก่อนการมาถึงของ DirectX นักพัฒนาที่สร้างแอปพลิเคชั่นมัลติมีเดียสำหรับแพลตฟอร์ม Windows จะต้องกำหนดค่าโปรแกรมให้ทำงานกับอุปกรณ์และการกำหนดค่าประเภทต่างๆ ขณะนี้ปัญหานี้ได้รับการแก้ไขแล้ว DirectX Foundation มีส่วนประกอบที่เรียกว่า Hardware Abstraction Layer (HAL) ซึ่งใช้ซอฟต์แวร์

ไดรเวอร์เพื่อให้แน่ใจว่ามีปฏิสัมพันธ์ระหว่างซอฟต์แวร์และฮาร์ดแวร์ ด้วยเหตุนี้ นักพัฒนาจึงสามารถสร้างแอปพลิเคชันเวอร์ชันเดียวโดยใช้อินเทอร์เฟซ DirectX ได้โดยไม่ต้องกังวลว่าแอปพลิเคชันจะทำงานบนการกำหนดค่าฮาร์ดแวร์เฉพาะ DirectX จะตรวจจับความสามารถทางเทคนิคของคอมพิวเตอร์ของคุณโดยอัตโนมัติและตั้งค่าพารามิเตอร์ที่เหมาะสม DirectX ยังช่วยให้คุณสามารถเรียกใช้แอพพลิเคชันมัลติมีเดียที่ต้องการการสนับสนุนด้านฮาร์ดแวร์ที่ไม่มีให้บริการได้ คอมพิวเตอร์เครื่องนี้- ในกรณีนี้ ส่วนประกอบเหล่านั้นจะถูกจำลองในซอฟต์แวร์โดยส่วนประกอบที่เรียกว่า Hardware Emulation Layer (HEL) และจัดเตรียมไดรเวอร์ซอฟต์แวร์ที่ทำหน้าที่เป็นอุปกรณ์ที่ขาดหายไป

DirectX Media อยู่เหนือ DirectX Foundation และให้บริการระดับสูง - การสนับสนุนแอนิเมชั่น, สตรีมมิ่งเอาท์พุต (ความสามารถในการส่งและดูข้อมูลเสียงและวิดีโอในขณะที่ดาวน์โหลดจากอินเทอร์เน็ต) และการโต้ตอบ การบูรณาการบริการระดับต่ำที่ DirectX Foundation มอบให้และบริการระดับสูงที่ DirectX Media มอบให้โดยอัตโนมัติ ช่วยลดความยุ่งยากในการสร้างและเล่นองค์ประกอบมัลติมีเดีย ทำให้นักพัฒนาสามารถรวมบริการเหล่านี้ไว้ในแอปพลิเคชันและเว็บเพจของตนได้ ดังนั้นจึงให้เนื้อหามัลติมีเดียแบบโต้ตอบได้ ที่ไม่เคยมีมาก่อน นอกจากนี้ DirectX Media ยังช่วยแก้ปัญหาเรื่องการประสานงานอีกด้วย ประเภทต่างๆเอฟเฟกต์มัลติมีเดียทำให้ง่ายต่อการซิงโครไนซ์การเล่น นอกเหนือจากองค์ประกอบหลักทั้งสองนี้แล้ว Microsoft DirectX ยังมีส่วนประกอบระดับสูงที่ให้ฟังก์ชันมัลติมีเดียสำหรับแอปพลิเคชันบนเว็บอีกด้วย ซึ่งรวมถึง: NetMeeting - เครื่องมือสำหรับจัดการสนทนากลุ่มออนไลน์และ Windows Media Player - เครื่องมือสำหรับส่งเนื้อหามัลติมีเดียผ่านอินเทอร์เน็ต ให้เราพิจารณาองค์ประกอบหลักโดยย่อ

ส่วนประกอบของ DirectX Foundation เหล่านี้ได้แก่ ไมโครซอฟต์ DirectDraw, Direct3D(โหมดทันทีและโหมดคงไว้), DirectInput, DirectMusic, DirectSound,

DirectSound 3D และ DirectPlay อินเทอร์เฟซการเขียนโปรแกรมระดับระบบเหล่านี้

ให้การเข้าถึงต่างๆ ได้อย่างมีประสิทธิภาพ อุปกรณ์คอมพิวเตอร์และมอบความเป็นอิสระด้านฮาร์ดแวร์ที่แท้จริงของแอพพลิเคชั่น ขจัดปัญหาในการติดตั้งไดรเวอร์และความไม่เข้ากันของแพลตฟอร์มฮาร์ดแวร์และซอฟต์แวร์

Microsoft Direct3D เป็นอินเทอร์เฟซสำหรับการทำงานกับการ์ดแสดงผล 3 มิติ สถาปัตยกรรม Direct3D แสดงในรูปที่ 1.5

แอปพลิเคชั่น Win32

Direct3D รองรับโหมดการทำงานสองโหมด - โหมดทันทีและโหมดเก็บรักษา ในโหมดทันที Direct3D จะให้การสนับสนุนฮาร์ดแวร์สำหรับนักพัฒนาเกมและแอพพลิเคชั่นมัลติมีเดียในสภาพแวดล้อม ไมโครซอฟต์ วินโดวส์- ช่วยให้คุณได้รับความเป็นอิสระด้านฮาร์ดแวร์ รองรับบัฟเฟอร์ Z แบบสลับได้และสถาปัตยกรรมโปรเซสเซอร์ Intel MMX ในโหมดนี้ กราฟิกพื้นฐานขั้นพื้นฐานจะถูกนำไปใช้โดยตรง โดยไม่ต้องใช้บัฟเฟอร์การดำเนินการ

โหมดคงไว้ช่วยให้สร้างและสร้างภาพเคลื่อนไหวโลก 3 มิติได้ง่ายขึ้นโดยรองรับคุณสมบัติใหม่ 2 ประการ ได้แก่ ตัวแทรกภาพเคลื่อนไหวพร้อมการผสมสี การเคลื่อนไหวของวัตถุที่ราบรื่น และคุณสมบัติหลายอย่าง ประเภทต่างๆการเปลี่ยนแปลง รวมถึงการเติมโครงสร้าง 3D mesh ตามลำดับ

วัตถุ (ตาข่าย) ช่วยให้สามารถโหลดได้ทีละน้อย เซิร์ฟเวอร์ระยะไกล- ช่วยให้นักพัฒนาสามารถใช้กราฟิก 3D ได้อย่างมีประสิทธิภาพ โดยไม่ต้องจัดการโครงสร้างวัตถุโดยตรงในระดับต่ำ

ควรสังเกตว่าแอปพลิเคชัน Direct3D สื่อสารกับอุปกรณ์กราฟิกในลักษณะเดียวกันโดยไม่คำนึงถึงโหมด พวกเขาอาจใช้หรือไม่ใช้การจำลองซอฟต์แวร์ก่อนเข้าถึง HAL ในความเป็นจริง Direct3D ได้รับการบูรณาการอย่างใกล้ชิดกับส่วนประกอบ DirectDraw ดังนั้นในรูปที่ 1.2 เลเยอร์นามธรรมของฮาร์ดแวร์ HAL จึงถูกกำหนดเป็น DirectDraw/Direct3D HAL Direct3D Z บัฟเฟอร์และเรนเดอร์พื้นผิว ในขณะที่ DirectDraw จะแสดงโดยตรง อินเทอร์เฟซ Direct3D COM เป็นส่วนต่อประสานกับ DirectDraw

DirectDraw เป็นตัวจัดการการจัดการหน่วยความจำที่ให้ ชุดพื้นฐานฟังก์ชั่นสำหรับแอพพลิเคชั่นกราฟิกและมัลติมีเดียที่ทำงานอยู่ แพลตฟอร์มวินโดวส์- ต่างจากกราฟิก Windows แบบดั้งเดิม DirectDraw ใช้การเข้าถึงโดยตรงไปยังหน่วยความจำจอแสดงผลและอุปกรณ์กราฟิก ในขณะเดียวกันก็รับประกันความเข้ากันได้อย่างสมบูรณ์กับแอพพลิเคชั่น Windows

รูปที่ 1.6 แสดงการโต้ตอบระหว่าง DirectDraw, ส่วนประกอบเคอร์เนลระบบปฏิบัติการ GDI (Graphics Device Interface), Hardware Abstraction Layer (HAL) และเลเยอร์การจำลองฮาร์ดแวร์

(เลเยอร์การจำลองฮาร์ดแวร์, HEL) อย่างที่คุณเห็น DirectDraw นั้นมีอยู่อย่างอิสระ

mo จาก GDI และอินเทอร์เฟซทั้งสองมีความสามารถในการเข้าถึงอุปกรณ์กราฟิกโดยตรงผ่านเลเยอร์ที่ไม่ขึ้นกับฮาร์ดแวร์ ต่างจาก GDI ตรงที่ DirectDraw ไม่ได้ใช้คุณสมบัติด้านฮาร์ดแวร์ หากอุปกรณ์เฉพาะไม่รองรับฟังก์ชันที่จำเป็น DirectDraw จะพยายามจำลองโดยใช้ HEL DirectDraw รองรับอะแดปเตอร์แสดงผลที่หลากหลาย - ตั้งแต่จอภาพธรรมดาไปจนถึงจอภาพที่ซับซ้อน อุปกรณ์มืออาชีพ- DirectDraw ทำหน้าที่ในระดับพื้นผิวกราฟิก

พื้นฐานสำหรับระดับสูง ฟังก์ชั่นกราฟิกและอินเทอร์เฟซและอนุญาตให้คุณใช้ความสามารถของฮาร์ดแวร์ที่ได้รับจากอุปกรณ์หรือจำลองความสามารถเหล่านั้นหากจำเป็น

แอปพลิเคชั่น Win32

เลเยอร์ (HEL)

เลเยอร์นามธรรม

การ์ดจอ

รูปที่ 1.6 – การรวม DirectDraw เข้ากับระบบ

DirectInput เป็นอินเทอร์เฟซสำหรับ อุปกรณ์ต่างๆการป้อนข้อมูล - แป้นพิมพ์ เมาส์ จอยสติ๊ก รวมถึงอุปกรณ์ที่มีการตอบรับแรง เมื่อเทียบกับคุณสมบัติทั่วไปทั่วไป อินเทอร์เฟซนี้รองรับอุปกรณ์ได้มากขึ้นและให้การตอบสนองต่อการร้องขอที่รวดเร็วยิ่งขึ้น ด้วยการทำงานร่วมกับไดรเวอร์อุปกรณ์โดยตรง DirectInput จะไม่ใช้ระบบส่งข้อความของ Microsoft Windows

คุณสมบัติ DirectInput ใหม่ประกอบด้วยรายการอุปกรณ์ที่รองรับเพิ่มเติม ได้แก่ แผ่นเกม เครื่องบิน

แอกบิน, หมวกกันน็อค ความเป็นจริงเสมือน(หมวกเสมือนจริง)

และ อุปกรณ์ที่มีการตอบรับ ให้เอฟเฟกต์ เช่น แรงสั่นสะเทือน ความต้านทานต่อการเคลื่อนไหว ฯลฯ ซึ่งการใช้งานดังกล่าวทำให้เกมสมัยใหม่มีความสมจริงมากยิ่งขึ้น

DirectMusic เป็นสมาชิกใหม่ของครอบครัว เทคโนโลยีไดเร็คเอ็กซ์ซึ่งเป็นซอฟต์แวร์เชลล์สำหรับสร้างเทมเพลตดนตรีและคำแนะนำในการตอบสนองต่อการกระทำของผู้ใช้ สิ่งนี้ทำให้นักพัฒนาสามารถสร้างได้ เพลงพื้นหลังแบบเรียลไทม์ตามอัลกอริธึมที่ระบุในเว็บเพจหรือแอปพลิเคชันมัลติมีเดีย DirectMusic นำเสนอการใช้งานมาตรฐาน DownLoadable Sounds (DLS) อย่างเต็มรูปแบบ ช่วยให้นักพัฒนาสามารถสร้างเทมเพลตเพลงที่สามารถเล่นได้บนแพลตฟอร์มฮาร์ดแวร์แทบทุกชนิด DirectMusic มี DirectMusic Producer ซึ่งเป็นโปรแกรมแก้ไขแบบรวมที่ช่วยให้คุณทำงานกับออบเจ็กต์ DirectMusic ทั้งหมด: สไตล์ เทมเพลต เครื่องมือ DLS ฯลฯ

DirectPlay เป็นอินเทอร์เฟซการเขียนโปรแกรมระดับสูงระหว่าง โปรแกรมประยุกต์และบริการสื่อสารซึ่งทำให้การสื่อสารผ่านโมเด็มหรือเครือข่ายท้องถิ่นทำได้ง่ายขึ้น DirectPlay มีชุดยูทิลิตี้ที่ช่วยให้ผู้เล่นสามารถค้นหาพันธมิตรและเว็บไซต์ รองรับการไหลเวียนของข้อมูลระหว่างเซิร์ฟเวอร์ และชุดฟังก์ชันเดียวกันนี้ได้รับการสนับสนุนสำหรับผู้ใช้แอปพลิเคชันใด ๆ โดยไม่คำนึงถึงประเภท บริการออนไลน์หรือโปรโตคอล

ใน นอกเหนือจากอินเทอร์เฟซ DirectX Foundation ระดับต่ำแล้ว DirectX ยังมีชุดอินเทอร์เฟซการเขียนโปรแกรมระดับสูงกว่าอีกด้วย

และส่วนประกอบ DirectX Media ซึ่งให้การสนับสนุนแอพพลิเคชั่นมัลติมีเดีย แอนิเมชั่น และเอาท์พุตข้อมูลสตรีมมิ่ง ปัจจุบัน DirectX Media ประกอบด้วยอินเทอร์เฟซการเขียนโปรแกรมหลักดังต่อไปนี้:

ไดเร็คโชว์ (เมื่อก่อนเรียกว่า. ActiveMovieSDK); ไดเร็คแอนิเมชั่น (เมื่อก่อนเรียกว่า.แอ็กทีฟเอ็กซ์แอนิเมชัน); การแปลง DirectX โปรดทราบว่าบริการ DirectX Media ใช้บริการ DirectX Foundation

ฟังก์ชัน โครงสร้าง และค่าคงที่ที่จัดทำโดยแอปพลิเคชัน (ไลบรารี บริการ) หรือระบบปฏิบัติการเพื่อใช้ภายนอก ผลิตภัณฑ์ซอฟต์แวร์- ใช้โดยโปรแกรมเมอร์เมื่อเขียนแอปพลิเคชันทุกประเภท

YouTube สารานุกรม

  • 1 / 5

    API กำหนดฟังก์ชันการทำงานที่โปรแกรม (โมดูล ไลบรารี) มอบให้ ในขณะที่ API ช่วยให้คุณสามารถสรุปได้ว่าฟังก์ชันนี้ถูกนำไปใช้อย่างไร

    หากโปรแกรม (โมดูล, ไลบรารี) ถือเป็นกล่องดำ API จะเป็นชุดของ "ตัวจัดการ" ที่ผู้ใช้สามารถใช้งานได้ ของกล่องนี้และเขาสามารถบิดและดึงได้

    ส่วนประกอบซอฟต์แวร์โต้ตอบกันผ่าน API ในกรณีนี้ ส่วนประกอบมักจะสร้างลำดับชั้น - ส่วนประกอบระดับสูงใช้ API ของส่วนประกอบระดับต่ำ และในทางกลับกัน ส่วนประกอบเหล่านั้นก็ใช้ API ของส่วนประกอบระดับล่างด้วยซ้ำ

    โปรโตคอลการถ่ายโอนข้อมูลผ่านทางอินเทอร์เน็ตถูกสร้างขึ้นบนหลักการนี้ สแต็กโปรโตคอลมาตรฐาน (รุ่นเครือข่าย OSI) มี 7 เลเยอร์ (จาก ระดับทางกายภาพส่งบิตไปยังเลเยอร์โปรโตคอลของแอปพลิเคชัน เช่น HTTP และ IMAP) แต่ละเลเยอร์ใช้ฟังก์ชันการทำงานของเลเยอร์การถ่ายโอนข้อมูลก่อนหน้า ("ต่ำกว่า") และในทางกลับกัน มอบฟังก์ชันที่จำเป็นไปยังระดับถัดไป ("สูงกว่า")

    สิ่งสำคัญคือต้องทราบว่าแนวคิดของโปรโตคอลมีความหมายใกล้เคียงกับแนวคิดของ API ทั้งสองอย่างเป็นนามธรรมของฟังก์ชันการทำงานเฉพาะในกรณีแรกเรากำลังพูดถึงการถ่ายโอนข้อมูลและในส่วนที่สองเรากำลังพูดถึงปฏิสัมพันธ์ของแอปพลิเคชัน

    API ฟังก์ชันและคลาสไลบรารีมีคำอธิบาย ลายเซ็นและ ความหมายของฟังก์ชัน.

    ลายเซ็นฟังก์ชัน

    บางครั้งก็แยกแยะได้ ลายเซ็นการโทรและ ลายเซ็นการดำเนินการฟังก์ชั่น โดยทั่วไปลายเซ็นการโทรจะถูกรวบรวมจากโครงสร้างวากยสัมพันธ์ของการเรียกใช้ฟังก์ชัน โดยคำนึงถึงลายเซ็นของขอบเขตของฟังก์ชันที่กำหนด ชื่อของฟังก์ชัน ลำดับของประเภทอาร์กิวเมนต์ที่เกิดขึ้นจริงในการโทร และประเภทของ ผลลัพธ์. ลายเซ็นการใช้งานมักจะมีองค์ประกอบบางอย่างจากโครงสร้างวากยสัมพันธ์ของการประกาศฟังก์ชัน: ตัวระบุขอบเขตฟังก์ชัน ชื่อของมัน และลำดับของประเภทอาร์กิวเมนต์ที่เป็นทางการ

    ตัวอย่างเช่น ในภาษาการเขียนโปรแกรม C++ ฟังก์ชั่นง่ายๆคอมไพเลอร์ได้รับการยอมรับโดยไม่ซ้ำกันด้วยชื่อและลำดับประเภทของอาร์กิวเมนต์ซึ่งถือเป็นลายเซ็นของฟังก์ชันในภาษานี้ หากฟังก์ชันเป็นวิธีการของคลาสใดคลาสหนึ่ง ชื่อคลาสก็จะรวมอยู่ในลายเซ็นด้วย

    ในอุตสาหกรรมซอฟต์แวร์ API มาตรฐานทั่วไปสำหรับการทำงานมาตรฐานมีความสำคัญเนื่องจากทำให้มั่นใจได้ว่าโปรแกรมทั้งหมดที่ใช้ API ทั่วไปจะทำงานได้ดีเท่าเทียมกันหรือ อย่างน้อยในลักษณะที่คุ้นเคยโดยทั่วไป ในกรณีของ GUI API หมายความว่าโปรแกรมจะมีลักษณะคล้ายกัน ส่วนต่อประสานกับผู้ใช้ซึ่งอำนวยความสะดวกในกระบวนการเชี่ยวชาญผลิตภัณฑ์ซอฟต์แวร์ใหม่

    ในทางกลับกัน ความแตกต่างใน API ของระบบปฏิบัติการที่แตกต่างกันทำให้การพอร์ตแอปพลิเคชันระหว่างแพลตฟอร์มเป็นเรื่องยากมาก มี วิธีการต่างๆเพื่อหลีกเลี่ยงความซับซ้อนนี้ - การเขียน API "ระดับกลาง" (API ของอินเทอร์เฟซแบบกราฟิก wxWidgets, GTK ฯลฯ ) การเขียนไลบรารีที่แสดง การโทรของระบบระบบปฏิบัติการหนึ่งเข้าสู่การเรียกระบบของระบบปฏิบัติการอื่น (สภาพแวดล้อมการดำเนินการเช่น Wine, cygwin เป็นต้น) การแนะนำมาตรฐานการเข้ารหัสในภาษาการเขียนโปรแกรม (เช่น ห้องสมุดมาตรฐานภาษา C) การเขียนภาษาที่ตีความนำไปใช้บนแพลตฟอร์มต่างๆ (, python, perl, php, tcl, Java ฯลฯ )

    ควรสังเกตว่าโปรแกรมเมอร์มักจะมี API ที่แตกต่างกันหลายตัวเพื่อให้บรรลุผลลัพธ์เดียวกัน ยิ่งไปกว่านั้น แต่ละ API มักจะถูกนำไปใช้โดยใช้ส่วนประกอบซอฟต์แวร์ API ในระดับนามธรรมที่ต่ำกว่า

    ตัวอย่างเช่น เพื่อดูบรรทัด “Hello, world!” ในเบราว์เซอร์ " คุณเพียงแค่ต้องสร้างเอกสาร HTML ที่มีชื่อน้อยที่สุดและมีเนื้อหาที่เรียบง่าย บรรทัดนี้- เมื่อเบราว์เซอร์เปิดเอกสารนี้ โปรแกรมเบราว์เซอร์จะส่งชื่อไฟล์ (หรือตัวอธิบายไฟล์ที่เปิดอยู่แล้ว) ไปยังไลบรารีที่ประมวลผลเอกสาร HTML ซึ่งในทางกลับกันจะ ความช่วยเหลือเกี่ยวกับ APIระบบปฏิบัติการจะอ่านไฟล์นี้และทำความเข้าใจโครงสร้างของไฟล์ จากนั้นจึงเรียกใช้ตามลำดับผ่าน API ของไลบรารีกราฟิกพื้นฐานมาตรฐาน การดำเนินการต่างๆ เช่น "ล้างหน้าต่าง" "เขียน "สวัสดีชาวโลก!" ในแบบอักษรที่เลือก ในขณะที่ดำเนินการเหล่านี้ ไลบรารีกราฟิกดั้งเดิมจะติดต่อกับไลบรารีอินเทอร์เฟซของหน้าต่างพร้อมกับคำขอที่เหมาะสม และไลบรารีนี้จะเรียกระบบปฏิบัติการ API เพื่อเขียนข้อมูลลงในบัฟเฟอร์การ์ดวิดีโอ

    นอกจากนี้ ในเกือบทุกระดับยังมี API ทางเลือกที่เป็นไปได้หลายตัว ตัวอย่างเช่น เราอาจเขียนเอกสารต้นฉบับไม่ใช่ HTML แต่เป็น LaTeX และเราสามารถใช้เบราว์เซอร์ใดก็ได้ในการแสดงผล เบราว์เซอร์ต่างๆโดยทั่วไปแล้ว ให้ใช้ไลบรารี HTML ที่แตกต่างกัน และนอกจากนี้ ทั้งหมดนี้ยังสามารถคอมไพล์ได้โดยใช้ไลบรารีดั้งเดิมที่แตกต่างกันและบนระบบปฏิบัติการที่แตกต่างกัน

    ปัญหาหลักที่มีอยู่ ระบบหลายระดับ API จึงเป็นดังนี้:

    • ความยากในการพอร์ต รหัสโปรแกรมจากหนึ่ง ระบบเอพีไอไปเป็นอีกเครื่องหนึ่ง (เช่น เมื่อเปลี่ยนระบบปฏิบัติการ)
    • การสูญเสียฟังก์ชันการทำงานเมื่อย้ายจากระดับล่างไปสู่ระดับที่สูงขึ้น พูดโดยคร่าวๆ ก็คือ แต่ละ “เลเยอร์” API ถูกสร้างขึ้นเพื่ออำนวยความสะดวกในการดำเนินการของบางเลเยอร์ ชุดมาตรฐานการดำเนินงาน แต่ในขณะเดียวกัน มันก็กลายเป็นเรื่องยากหรือเป็นไปไม่ได้โดยพื้นฐานที่จะดำเนินการอื่น ๆ ที่ได้รับจากมากกว่านั้น ระดับต่ำเอพีไอ

    API ที่มีชื่อเสียงที่สุด

    ระบบปฏิบัติการ

    ไม่กี่ปีที่ผ่านมา Apple ได้เปิดตัว API กราฟิกใหม่ - Metal ความแตกต่างจาก Scene Kit เดียวกันคือไม่ใช่ API ระดับสูงที่ทำงานบน OpenGL ES (มือถือ เวอร์ชัน OpenGL) แต่เป็น API ระดับต่ำสำหรับการเรนเดอร์และการประมวลผลที่สามารถแทนที่ OpenGL ได้ โดย ตามข้อมูลของ Apple, Metal มีลำดับความสำคัญเร็วกว่า OpenGL ES (แต่ในความเป็นจริงแล้ว เฉพาะการโทรออกและการถ่ายโอนข้อมูลไปยัง GPU เท่านั้นที่เร็วกว่า 10 เท่า) API นี้สามารถใช้ได้กับอุปกรณ์ทั้งหมดที่ทำงานบนโปรเซสเซอร์ A7 และใหม่กว่า รวมถึงบน Mac ที่เริ่มตั้งแต่ปี 2012

    API กราฟิกทำงานอย่างไร

    ก่อนอื่นเลย API คืออะไร? ซึ่งย่อมาจาก Application Programming Interface ซึ่งเป็นอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน การพูด ในภาษาง่ายๆ- นี้ รหัสพร้อมซึ่งทำให้ชีวิตของโปรแกรมเมอร์ง่ายขึ้นมากเมื่อเขียนโปรแกรม อันที่จริงนี่เป็นผลิตภัณฑ์กึ่งสำเร็จรูปบางประเภท - ด้วยรหัสนี้คุณสามารถเขียนโปรแกรมของคุณเองได้เร็วและง่ายขึ้นมาก

    ตอนนี้เรามาดูกันว่า GPU ทำงานอย่างไรกับ API เป็นการไม่ถูกต้องที่จะคิดว่าการเรียก API ทำงานบน GPU โดยตรง และไม่ถูกต้องยิ่งกว่านั้นหากคิดว่า GPU เสร็จสิ้นการประมวลผลการเรียกเมื่อผลลัพธ์ API ถูกส่งคืน ตัวอย่างเช่น หากไดรเวอร์ต้องดำเนินการคำสั่งการเรนเดอร์ในขณะที่ถูกสร้างขึ้น ไดรเวอร์นั้นจะไม่ได้ใช้งาน CPU ในขณะที่รอให้การเรนเดอร์เสร็จสมบูรณ์ และหลังการดำเนินการ มันจะกลับกัน - GPU จะอยู่เฉยๆ รอคำสั่งใหม่มาถึงจากไดรเวอร์

    ตามนี้ เหตุผลที่ซีพียูและ GPU ทำงานแบบอะซิงโครนัส: อันดับแรกไดรเวอร์กราฟิกจะรวบรวมการเรียกดึงทั้งหมดสำหรับทั้งเฟรมก่อน จากนั้นจึงส่งไปยัง GPU เท่านั้น นอกจากนี้ เมื่อคำสั่งให้วาดเฟรมถัดไปมาถึง GPU ก็จะได้รับการประมวลผลเฟรมนี้แล้ว นั่นคือเราได้รับความล่าช้าหนึ่งเฟรม: ในขณะที่ CPU กำลังเตรียมการเรียกเฟรมปัจจุบัน เฟรมสุดท้ายจะแสดงผลบน GPU ในความเป็นจริง คุณสามารถบัฟเฟอร์ได้มากกว่าหนึ่งเฟรม ดังนั้นจึงได้รับ ความถี่ที่สูงขึ้นเฟรม: ทุกอย่างขึ้นอยู่กับประสิทธิภาพของโปรเซสเซอร์และการ์ดแสดงผลเท่านั้น

    นวัตกรรมใน API Metal

    เกิดอะไรขึ้นกับวิธีที่อธิบายไว้ข้างต้น สิ่งที่ไม่ดีคือมีคนกลางระหว่าง GPU และ API - ไดรเวอร์ และเขาคือผู้ควบคุมความล่าช้า ใน Metal API บัฟเฟอร์คำสั่งจะเปิดอยู่ และแอปพลิเคชันสามารถเติมบัฟเฟอร์คำสั่งเองและส่งไปยังคิวคำสั่งเพื่อดำเนินการบน GPU ดังนั้นการสมัครจึงมี ควบคุมเต็มรูปแบบเหนืองานและสามารถจัดการความล่าช้าได้ ยิ่งกว่านั้น ขณะนี้เป็นไปได้ที่จะทำให้คำสั่งขนานกันได้อย่างง่ายดายและวางไว้ในบัฟเฟอร์ในลำดับที่แน่นอน เนื่องจากโปรแกรมเมอร์จะมองเห็นได้ชัดเจนยิ่งขึ้นว่าผลลัพธ์จะปรากฏในลำดับใด

    นวัตกรรมที่สำคัญอีกประการหนึ่งคือฮาร์ดแวร์: Metal ได้รับการออกแบบมาเพื่อใช้งานบน Apple A7 และโปรเซสเซอร์ที่สูงกว่า หน่วยความจำที่ใช้ร่วมกันกล่าวคือ CPU และ GPU สามารถเข้าถึงข้อมูลเดียวกันได้โดยไม่ต้องถ่ายโอนข้าม บัส PCI- Metal ช่วยให้โปรแกรมเข้าถึงบัฟเฟอร์ CPU ได้โดยตรง และโปรแกรมเมอร์สามารถ "ผสม" การคำนวณบน GPU และ CPU ซึ่งสามารถเร่งความเร็วโปรแกรมได้อย่างมาก

    ประโยชน์ที่แท้จริงจาก API Metal

    ตามที่ฉันได้อธิบายไว้ข้างต้น การ Draw Call แต่ละครั้งจะใช้เวลาพอสมควรกับ CPU และ GPU การเรนเดอร์บน GPU ไม่สามารถทำได้เร็วขึ้นด้วยเหตุผลที่ชัดเจน (ขึ้นอยู่กับประสิทธิภาพของ GPU เท่านั้น) แต่คุณสามารถชนะได้ด้วยวิธีอื่น: ประการแรก คุณสามารถลดเวลาในการถ่ายโอนข้อมูลได้ (เนื่องจาก Metal ทำงานร่วมกับหน่วยความจำที่ใช้ร่วมกัน) และประการที่สอง คุณสามารถลดเวลาการประมวลผลการโทรบน CPU ได้ เวลาประมวลผลการโทรบน CPU จะลดลงเนื่องจากไม่มีไดรเวอร์ตัวกลาง และเนื่องจากการสร้างบัฟเฟอร์คำสั่งแบบขนาน

    และนี่คือคำถามที่เกิดขึ้น - Apple พูดถึงประสิทธิภาพการผลิตที่เพิ่มขึ้นสิบเท่าอะไร? ใช่ นั่นคือสิ่งที่เวลาในการโทรบน CPU สั้นลงมากในขณะนี้ แต่ GPU แทบจะไม่ได้รับผลกระทบที่นี่ ดังนั้นท้ายที่สุดแล้ว น่าเสียดายที่เป็นไปไม่ได้ที่จะปรับปรุงกราฟิกโดยตรงโดยใช้ Metal API แต่เนื่องจากโปรเซสเซอร์เป็นอิสระ จึงสามารถโหลดฟิสิกส์ได้: การคำนวณฟิสิกส์ของอนุภาค ปฏิสัมพันธ์ของวัตถุต่างๆ (ทุกคนจำลิงบินได้ร้อยตัวบน การนำเสนอด้วยไอโฟน 7?) การคำนวณผลกระทบของผ้าและน้ำ เป็นต้น และเนื่องจาก GPU เคยทำสิ่งนี้ เราจึงปล่อยมันออก และปรากฎว่าตอนนี้สามารถส่งออกทางอ้อมได้แล้ว ภาพที่ดีที่สุดสิ่งที่เราเห็นในเกม (รวมถึง Asphalt 8) (ใส่ใจกับรายละเอียดของการปูหินและเอฟเฟกต์):

    การทำงานร่วมกันระหว่าง OpenGL และ Metal

    ดังที่เห็นได้จากข้างต้น Metal ช่วยยืดอายุการใช้งานของโปรเซสเซอร์ได้อย่างแท้จริง ดังนั้นหากระบบไม่รองรับ Metal แต่มีมาก โปรเซสเซอร์อันทรงพลังดังนั้นจึงไม่ใช่เรื่องยากโดยเฉพาะในการเขียนเกมใหม่สำหรับ OpenGL - และนี่คือสิ่งที่เราเห็นใน Vainglory สำหรับ Android - เพื่อให้ได้กราฟิกสูงสุด (ระดับ Apple A9) บน OpenGL ที่คุณต้องการ โปรเซสเซอร์ชั้นนำระดับของ Snapdragon 820 ซึ่งในแง่ของประสิทธิภาพดิบ (ใน FLOPS) นั้นทรงพลังเป็นสองเท่าของ A9

    แอปเปิ้ลเมทัล 2

    ในการนำเสนอในเดือนมิถุนายน Apple ได้เปิดตัว Metal เวอร์ชันใหม่ การปรับปรุงหลักคือการรองรับ VR การเรียนรู้ของเครื่องและ GPU ภายนอก ซึ่งตามทฤษฎีแล้วจะอนุญาตให้ย้ายได้ เกมส์แม็คจากพีซีโดยไม่มีการเสื่อมสภาพของกราฟิก (ในขณะนี้ พอร์ตของเกมส่วนใหญ่มีความสำคัญอย่างยิ่ง เปิดตัวไวน์ซึ่งจะลดประสิทธิภาพลงอย่างมากและส่งผลอย่างมากต่อ GPU ที่ค่อนข้างอ่อนแออยู่แล้วใน Mac) แต่เราจะมาดูกันว่าสิ่งนี้จะเกิดขึ้นในความเป็นจริงในอนาคตเท่านั้น

    สัปดาห์ที่ผ่านมาก็มีการนำเสนอ API วัลแคนซึ่ง AMD และ NVIDIA ได้ประกาศการสนับสนุนอย่างกว้างขวาง ใหม่ กุยที่พัฒนา โครนอส กรุ๊ปซึ่งเป็นสมาคมที่ก่อตั้งในปี พ.ศ. 2543 Khronos Group มีหน้าที่รับผิดชอบในการพัฒนาและสนับสนุน มาตรฐานแบบเปิดในด้านแอพพลิเคชั่นมัลติมีเดียบนแพลตฟอร์มและอุปกรณ์ต่างๆ สมาคมนี้ได้รับการสนับสนุนจาก AMD และ NVIDIA รวมถึงบริษัทอื่นๆ อีกหลายแห่ง

    สัปดาห์ที่แล้ว Vulkan API เวอร์ชันสุดท้าย 1.0 ได้รับการอนุมัติแล้ว AMD และ NVIDIA นำเสนอไดรเวอร์เบต้าตามลำดับ AMD เปิดตัวเวอร์ชันเบต้าล่วงหน้า ซอฟต์แวร์ Radeonยังคงเป็น 14 กุมภาพันธ์ NVIDIA นำเสนอ ไดรเวอร์การ์ดจอ 356.39 ซึ่งเน้นไปที่การรองรับ Vulkan API ด้วย

    แนวทางของ Vulkan API นั้นคล้ายคลึงกับ Mantle API มาก ประเด็นก็คือนักพัฒนาได้รับมากขึ้น เข้าถึงได้ลึกกับฮาร์ดแวร์เพื่อให้ได้ประโยชน์สูงสุดจากมัน แนวทางนี้ช่วยให้คุณหลีกเลี่ยงปัญหาคอขวดที่มีอยู่ได้มากที่สุด ในทางกลับกัน นักพัฒนาจำเป็นต้องรู้แน่ชัดว่ากำลังทำอะไรอยู่ เช่น เมื่อทำงานกับหน่วยความจำ อินเทอร์เฟซ OpenGL ไม่ได้รับความนิยมเท่ากับ DirectX แต่ช่วยให้คุณสามารถบีบออกได้มากขึ้น

    Vulkan API ในเวอร์ชัน 1.0 รองรับบน Windows 7, Windows 8.1, Windows 10, Android และ Linux นักพัฒนาเกมยังไม่ได้ประกาศการสนับสนุนสำหรับเกมใดเกมหนึ่ง แต่ก็คุ้มค่าที่จะรอการประชุมนักพัฒนาเกมซึ่งจะจัดขึ้นระหว่างวันที่ 14 ถึง 18 มีนาคมในซานฟรานซิสโก จากเอ็นจิ้นเกมยังมีข้อมูลเกี่ยวกับ Source 2 ที่รองรับ Vulkan API อยู่แล้ว กระบวนการแก้ไขจุดบกพร่องทำได้ง่ายขึ้นโดยการสนับสนุนจาก Valve, LunarG และ Codeplay

    หลักการทาลอส

    โอเค แต่เกมหรือเอนจิ้นใดที่รองรับ Vulkan API หลักการ Talos ได้รับการพัฒนาโดย Croteam ซึ่งเป็นที่ทราบกันดีว่าในอดีตรองรับ API กราฟิกจำนวนมาก และในการทำซ้ำครั้งล่าสุด Talos Principle ก็ไม่มีข้อยกเว้น - รองรับ DirectX 9, DirectX 11, OpenGL และ Vulkan ในปัจจุบัน สำหรับสตูดิโอพัฒนา Vulkan ถือเป็นบอลลูนทดลอง แม้ว่า Vulkan API จะพร้อมใช้งานในเวอร์ชัน 1.0 แต่การสนับสนุนยังอยู่ในช่วงเบต้า นักพัฒนา Croteam ใช้เวลาประมาณสามเดือนในการเพิ่มการสนับสนุน แต่ลักษณะที่เป็นสากลของ API ทำให้สามารถเปิดตัวเวอร์ชัน Linux ได้ในไม่ช้า

    Vulkan API เข้ากันได้กับหลายแพลตฟอร์มในทางทฤษฎี แต่จนถึงขณะนี้การทดสอบและการเปรียบเทียบสามารถทำได้บน Windows เท่านั้น และสิ่งนี้มีข้อจำกัด การนำไปปฏิบัติยังอยู่ในระยะเริ่มแรก เส้นทางการเรนเดอร์ DirectX 11 มีการพัฒนามาหลายปี ดังนั้นจึงไม่มีที่ว่างสำหรับการเพิ่มประสิทธิภาพ สถานการณ์ที่นี่ขึ้นอยู่กับนักพัฒนาไดรเวอร์มากกว่า ได้แก่ AMD และ NVIDIA Talos Principle เป็นเกมแรกที่สนับสนุนวัลแคน ดังนั้นจึงยังไม่สามารถทำได้ การทดสอบเปรียบเทียบเพื่อประเมินการดำเนินการสนับสนุนที่ดีหรือไม่ดี

    เทคโนโลยีใหม่ถูกนำมาใช้เป็นครั้งแรกในตัวอย่างที่จัดทำโดยผู้ผลิต ในกรณีของ DirectX 12 นั้นเน้นที่ Draw Calls การทดสอบ 3DMark DirectX 12 แบบเดียวกันนั้นอาศัยการวัดประสิทธิภาพของ Draw Calls เกม DirectX 12 เท่านั้น สตาร์วอร์สกำลังพยายามใช้โหลดที่คล้ายกันเช่นกัน แต่หลักการ Talos ไม่ได้ขึ้นอยู่กับอะไรมากนัก ความเร็วสูง Draw Call เพื่อให้ API ระดับต่ำสร้างความแตกต่างอย่างมาก

    การรองรับ Vulkan API เวอร์ชัน 1.0 ยังอยู่ในช่วงเริ่มต้น และไดรเวอร์ AMD และ NVIDIA ก็เช่นเดียวกัน ไดรเวอร์ทั้งสองเป็นเวอร์ชันเบต้าซึ่งเป็นวิธีที่ผู้ผลิต GPU มองพวกเขา โดยปกติจะไม่มีการปรับปรุงประสิทธิภาพใหม่หรือการสนับสนุนสำหรับเทคโนโลยีใหม่ ดังนั้นเราจึงถอยกลับไป แต่เมื่อถึงระดับของการพัฒนาแล้ว ไดรเวอร์ของนักพัฒนา GPU ทั้งสองคนจะได้รับการสนับสนุน Vulkan รุ่นสุดท้าย- สิ่งนี้จะเกิดขึ้นเมื่อใดยังไม่ชัดเจนนัก แต่สำหรับตอนนี้ การใช้งานที่สำคัญอย่าใช้ Vulkan และเกมที่รองรับ API อยู่ในช่วงเบต้า ดังนั้นนักพัฒนา GPU จึงสามารถปรับแต่งไดรเวอร์ได้อย่างง่ายดาย

    สำหรับการทดสอบเราใช้ของเรา ระบบทดสอบสำหรับการ์ดแสดงผล ไดรเวอร์ การ์ดแสดงผลเอเอ็มดีและ NVIDIA เราได้อธิบายไว้ข้างต้นแล้ว ในการตั้งค่าที่เราตั้งไว้ ระดับสูงสุดกราฟิก แต่ยังทดสอบความละเอียดต่ำลงไปที่ 1,280 x 720 พิกเซล เพื่อเพิ่มประสิทธิภาพของ Draw Call

    การทดสอบหลักการ Talos - 1.280 x 720 พิกเซล

    การทดสอบหลักการ Talos - 2.560 x 1.440 พิกเซล

    การทดสอบหลักการ Talos - 3.840 x 2.160 พิกเซล

    ดังที่คุณเห็นจากผลลัพธ์ Vulkan API ให้การเพิ่มขึ้นอย่างมากเมื่อเทียบกับ OpenGL แต่ก่อน. ประสิทธิภาพของไดเร็คเอ็กซ์ 11 API ใหม่ขาดตลาด มีสาเหตุหลายประการสำหรับเรื่องนี้ ในด้านหนึ่ง การพัฒนาสำหรับ Vulkan ยังอยู่ในช่วงเริ่มต้น สิ่งนี้ใช้กับตัว API เอง ไดรเวอร์ และ เกมหลักการทาลอส เปรียบเทียบกับ OpenGL อินเทอร์เฟซใหม่ช่วยให้คุณเพิ่มทรัพยากรบางส่วนและหลีกเลี่ยงปัญหาคอขวด แต่ DirectX ได้รับการปรับปรุงมาหลายปีแล้ว ระดับปัจจุบัน- ไม่ว่าในกรณีใด ศักยภาพของ Vulkan API นั้นดีมาก

    หากเราเจาะลึกรายละเอียด เราไม่พบความแตกต่างด้านภาพระหว่าง Vulkan API และ DirectX 11 ดังนั้นเส้นทางการเรนเดอร์จึงได้รับการปรับเปลี่ยนเป็นอย่างดี ด้วยการใช้หลักการ Talos ในปัจจุบัน การ์ดแสดงผลที่มีหน่วยความจำ 2 GB ประสบปัญหาประสิทธิภาพลดลง อาจเนื่องมาจากไม่มากที่สุด งานที่มีประสิทธิภาพมีหน่วยความจำ เช่นเดียวกับ Mantle และ DirectX 12 Vulkan API สามารถเข้าถึงทรัพยากรหน่วยความจำได้ในระดับที่ลึกกว่า - ข้อเท็จจริงนี้ถือได้ว่าเป็นข้อได้เปรียบ แต่ก็อาจกลายเป็นข้อเสียได้เช่นกันหากนักพัฒนาไม่สามารถใช้หน่วยความจำได้อย่างมีประสิทธิภาพ

    ฉันค่อนข้างผิดหวังกับข้อผิดพลาดในปัจจุบัน ไดรเวอร์ NVIDIAเนื่องจากต้องรีบูตระบบหลังการทดสอบแต่ละครั้ง โดยไม่ต้องรีบูตเกมก็ล้มเหลว แม้ว่าด้วย ไดรเวอร์เอเอ็มดีเราไม่พบข้อผิดพลาดดังกล่าว

    การใช้งาน Vulkan API ในปัจจุบันดูมีแนวโน้มดี ในตอนนี้ เกมบนเดสก์ท็อปพีซีจะไม่เกี่ยวข้องกับเกมมากนัก เนื่องจากตลาด DirectX 11 และ 12 มีขนาดใหญ่มากและเมื่อเทียบกับ DirectX 12 รุ่นเดียวกัน ค่าใช้จ่ายในการใช้งานอาจสูงเกินไปและผลตอบแทนน้อยเกินไป แต่หากเกมจำเป็นต้องทำงานบนแพลตฟอร์มที่แตกต่างกันโดยมีข้อกำหนดด้านฮาร์ดแวร์ที่แตกต่างกัน Vulkan สามารถมีบทบาทสำคัญได้ ไม่ว่าในกรณีใดเราควรรอปฏิกิริยาจากผู้พัฒนาเกมไม่เช่นนั้นเราจะจบลงด้วยปัญหาไก่กับไข่ที่แก้ไขได้ยาก