مقايسه بهترين APIهاي گرافيكي
امروزه، دنياي فناوريهاي سهبعدي به چنان پيشرفت خيرهكنندهاي دست يافته است كه ميتوان ادعا كرد، هيچ مفهومي نيست كه تخيلات انسان توانايي تصور كردنش را داشته باشد، اما اين فناوريها از عهده تصويرسازي آن برنيايند. ابزارهاي مدلسازي سهبعدي به ياري انسان آمدهاند تا ايدههاي شخصي ما را به الگوهايي متخصصدي براي مصارف گسترده ديگر مانند سينما، پويانمايي (انيميشن)، بازيهاي ويديويي و معماري تبديل كنند. براي چنين اهدافي، نرمافزارهاي بسياري در دسترس هستند و اينكه مناسبترين ابزار كدام است، كاملا به سليقه افراد بستگي دارد. بهعلاوه روزبهروز بر محبوبيت نرمافزارهاي گرافيكي و رندرينگ سهبعدي افزوده ميشود مخصوصا وقتي پاي بازيهاي ويديويي در ميان باشد و اينجا است كه اهميت API هاي گرافيكي مشخص ميشود چراكه، API گرافيكي ابزاري است كه بهصورت اختصاصي براي سادهسازي فرايند ساخت تصاوير سهبعدي طراحي شده است.
API گرافيكي چيست؟
رابط برنامهنويسي نرمافزار متخصصدي يا Application Programming Interface كه به اختصار به آن رابط برنامهنويسي گرافيكي يا API گرافيكي نيز گفته ميشود ابزاري است كه فرايند ساخت گرافيك را در تمامي بخشهاي كامپيوتر، آسان ميكند. امروزه استفاده از API براي سازندگان سختافزارهاي گرافيك رايانهاي، يك ضرورت اجتناب ناپذير است؛ چراكه برنامهنويسها با وجود اينكه نياز به استفاده مستقيم از سختافزارهاي ويژهاي مثل كارتهاي گرافيك دارند، بايد به اين سختافزارها دسترسي مجازي هم داشته باشند.
اما پيش از آنكه به معرفي و مقايسه مطرحترين APIهاي گرافيكي موجود بپردازيم، لازم است با مفهوم ديگري با عنوان lower-level graphics API، بيشتر آشنا شويم. شايد با ترجمه تحتلفظي lower-level اين سوءتفاهم براي مخاطب ايجاد شود كه چرا پيشرفتهترين و بهروزترين APIهاي گرافيكي موجود، در دستهبندي lower-level يا سطح پايين قرار گرفتهاند؟ براي درك بهتر فلسفهي اين طبقهبندي، تصوير زير را مشاهده كنيد.
- مستطيل سبز: بازي ويديويي
- مستطيل قرمز: درايورها
- مستطيل زرد: موتور بازي
- نقطهچين: API گرافيكي
اين تصوير، روند پيشرفت ابزارهاي گرافيك رايانهاي را طي ساليان گذشته نشان ميدهد.
اولين رديف مربوط است به دوران كنسولهاي اوليه مانند آتاري و Commodore64 كه گرافيكي بسيار ساده و ابتدايي داشتهاند و نرمافزار (مستطيل سبزرنگ) بهطور مستقيم با سختافزار گرافيكي در ارتباط بودهاست.
رديف دوم نمايانگر اين است كه با گذشت زمان، هم سختافزارها و هم نرمافزارها، هردو پيچيدهتر شدهاند و سيستمهاي عامل از دسترسي مستقيم آنها با يكديگر جلوگيري ميكنند چراكه، نياز بوده تا نرمافزار، محدود به دستگاه خاصي نباشد و بتواند با طيف گستردهتري از سختافزارهاي موجود در بازار، سازگاري داشته باشد. بههمين دليل، استانداردهاي جديدي تعيين شدند و درايورها (مستطيل قرمز) پديد آمدند. API گرافيكي هم مانند رابطهايكاربري ديگر، وسيلهاي براي برقراري ارتباط، استانداردسازي و ثبت عملكردهاي نرمافزار است و درايورها اين موارد را به دستوراتي كه براي سختافزار قابل فهم باشد، ترجمه ميكنند.
در رديف سوم ميبينيم كه با پيچيدهتر شدن بازيها، ديگر امكان بازخواني مستقيم API گرافيكي از كدهاي منطقي بازي وجود نداشت و بههمين دليل لايه ديگري با نام موتور بازي يا game engine (مستطيل زرد) ايجاد شد. وجود چنين لايهاي از اين جهت ضروري بوده است كه توليد موضوعات گرافيكي با جزئيات زياد (higher-level) مثل ماهيت (entity)، دارايي (asset)، جنس (material)، دوربين (camera) و نور (light) در بخش گرافيكي API، تنها با كمك بهكارگيري فرمانهايي با جزئيات كم (lower-level) مانند سايهزني (shader)، بافت (texture) و شبكه توري (mesh) امكانپذير است.
رديف چهارم بيانگر شيوه كاركرد بازيهاي مرسوم امروزي است. همانطور كه مشاهده ميكنيد، با قويتر شدن بازيها، موتورهاي بازي نيز پيچيدهتر و گرانارزشتر شدهاند. بنابراين اكثر سازندگان بازي، ترجيح ميدهند بهجاي طراحي موتور بازي اختصاصي از موتورهاي بازي موجود در بازار مثل Unity و Unreal استفاده كنند و تمركز اصلي خود را بر طراحي بازي قرار دهند. تصوير نشان ميدهد كه درايورها نيز بزرگتر و پيچيدهتر شدهاند. درايورها با بازي تفاوت دارند و حاوي فايلهاي سنگين گرافيك و موزيك نيستند. پس چه چيزي درون آنهاست؟ هزاران هزار كد. چراكه، بايد APIهاي گرافيكي (مثل DirectX 9, 10, 11, OpenGL) را بهكار بگيرند و كارتهاي گرافيك يا GPU را مديريت كنند.
رديف پنجم اما نمايانگر نسل جديد APIهاي گرافيكي است. همانطور كه ميبينيد درايورها كمحجمتر و در عوض، موتورهاي بازي بزرگتر و پيچيدهتر شدهاند. بنابراين API گرافيكي lower-level بهمعناي پايينتر بودن كيفيت يا ضعيفتر بودن آن نيست و به اين معنا است كه در اين نسل جديد، تمام وظايف به ابزارهاي خودكار مثل درايورها محول نميشود و لايههاي بالاتر (مثل GPU)، مسئوليت بيشتري در مديريت و پردازش گرافيكي به عهده دارند و به همين دليل، درايورها سادهتر و كوچكتر شدهاند.
حالا كه با مفهوم APIگرافيكي low-level آشنا شديم، بياييد با چند API گرافيكي مطرح و پيشرو بيشتر آشنا شويم.
۱. دايركت ايكس ۱۲
DirectX، رابط گرافيكي پلتفرم مايكروسافت است. اين API گرافيكي شناختهشده با هدف مديريت وظايف مربوط به نرمافزارهاي چندرسانهاي (multimedia) و بهطور ويژه بهبود عملكرد بازي و ويدئو طراحي شد. در ابتدا كليه زيرشاخههاي اين API گرافيكي با واژه Direct آغاز ميشدند مانند Direct3D، DirectSound، DirectMusic، DirectDrawو... كه سرانجام كل مجموعه باعنوان DirectX نامگذاري شد. بعدها مايكروسافت، كنسول بازي اختصاصي خود را تحت عنوان Xbox روانه بازار كرد كه حرف X آن ريشه در همين DirectX دارد. اولين نسخه DirectX در سال ۲۰۰۲ و بانام DirectX 9 بههمراه ويندوز ۹۸ بهبازار آمد و جديدترين نسخه آن يعني DirectX 12 در سال ۲۰۱۴ رونمايي و در سال ۲۰۱۵ بههمراه ويندوز ۱۰ بهطور رسمي معرفي شد.
نام نسخه | شماره | تاريخ معرفي | توضيحات |
---|---|---|---|
DirectX 12 | 10.00.10240.16384 | جولاي۲۰۱۵ | Windows 10, Xbox One |
DirectX 12 | 10.00.15063.0000 | مارس ۲۰۱۷ | Windows 10, Depth Bounds Testing and Programmable MSAA added |
DirectX 12 | 10.00.17763.0001 | اكتبر ۲۰۱۸ | Windows 10, DirectX Raytracing support added |
DirectX 12 | 10.00.18362.0116 | مه ۲۰۱۹ | Windows 10, Variable Rate Shading (VRS) support added |
DirectX 12 توسط يك ويژگي خاص بهنام آداپتور چندگانه همراهي ميشود و به سازندگان اين امكان را ميدهد تا بهطور همزمان از چند GPU روي يك سيستم استفاده كنند. اين ويژگي (استفاده همزمان از چند GPU) پيش از اين تحت انحصار دو محصول از NVIDIA و AMD با نامهاي AMD CrossFireX و NVIDIA SLI بود.
DirectX 12 از تماميGPUهاي Fermi (و همينطور محصولات جديدتر) شركت انويديا، چيپهاي مبتني بر GCN شركت AMD و همينطور Hasswell و پردازندههاي جديد اينتل همراهي ميكند.
سال ۲۰۱۴ و حين برگزاري همايش SIGGRAPH، شركت اينتل ، ويديويي جذاب از كمربند سياركها در منظومه شمسي نمايش ميداد. اينتل مدعي شد كه براي ساخت اين دموي گرافيكي كه با كمك DirectX 12 توليد شده است، سرعت رندرينگ و مصرف برق CPU بهميزان ۵۰ تا ۷۰ درصد نسبت به DirectX 11 بهبود پيدا كردهاست.
بازي ويديويي Ashes of the Singularity اولين محصولي بود كه DirectX 12 را بهكار گرفت و مايكروسافت بهتازگي DirectX 12 را براي ويندوز ۷ نيز معرفي كرد. بهدليل تفاوتهاي ذاتي كامپيوتر و Xbox ، امكان تبادل مستقيم كدهاي DirectX 12 روي اين دو پلتفرم وجود ندارد، با اين وجود، كنسولهاي Xbox مايكروسافت به اين API گرافيكي مجهز است.
۲. OpenGL
Open Graphics Library كه به اختصار بهآن OpenGL هم گفته ميشود، يك رابط برنامهنويسي گرافيكي چندزبانه (cross-language) و چندسكويي (cross-platform) است كه بهزبان برنامهنويسي C نوشته شده و از آن براي رندرينگ گرافيكي دوبعدي و سهبعدي استفاده ميشود.
اين API اولينبار سال ۱۹۹۱ توسط شركت Silicon Graphics طراحي شد و در سال ۱۹۹۲ بهبازار آمد و متخصصدگستردهاي در زمينههاي مختلف مانند نقشهكشي با كامپيوتر، واقعيت مجازي، تجسم علمي و اطلاعات، شبيهسازي پرواز و بازيهاي ويديويي داشته است. OpenGL از سال ۲۰۰۶ به بعد، توسط Khronos Group كه يك كنسرسيوم غيرانتفاعي فناوري است، اداره ميشود. جديدترين نسخه اين API كه 4.6 OpenGL نام دارد در ۳۱ ژوئيه سال ۲۰۱۷ معرفي شد. در جدول زير تاريخ معرفي و مشخصات ۷ نسخه آخر (نسخه ۴ به بعد) OpenGL را مشاهده ميكنيد.
نسخه | تاريخ معرفي | مشخصات |
---|---|---|
4.0 | مارس ۲۰۱۰ | GLSL 4.00, Tessellation on GPU, shaders with 64-bit precision |
4.1 | جولاي۲۰۱۰ | GLSL 4.10, Developer-friendly debug outputs, compatibility with OpenGL ES 2.0 |
4.2 | اوت۲۰۱۱ | GLSL 4.20, Shaders with atomic counters, draw transform feedback instanced, shader packing, performance improvements |
4.3 | اوت۲۰۱۲ | GLSL 4.30, Compute shaders leveraging GPU parallelism, shader storage buffer objects, high-quality ETC2/EAC texture compression, increased memory security, a multi-application robustness extension, compatibility with OpenGL ES 3.0 |
4.4 | جولاي۲۰۱۳ | GLSL 4.40, Buffer Placement Control, Efficient Asynchronous Queries, Shader Variable Layout, Efficient Multiple Object Binding, Streamlined Porting of Direct3D applications, Bindless Texture Extension, Sparse Texture Extension |
4.5 | اوت۲۰۱۴ | GLSL 4.50, Direct State Access (DSA), Flush Control, Robustness, OpenGL ES 3.1 API and shader compatibility, DX11 emulation features |
4.6 | جولاي۲۰۱۷ | GLSL 4.60, More efficient geometry processing and shader execution, more information, no error context, polygon offset clamp, SPIR-V, anisotropic filterin |
۳.Vulkan
Vulkan يك API گرافيكي كمهزينه و چندسكويي است كه متخصصدهاي گرافيكي قدرتمندي مانند بازيهاي ويديويي و رسانههاي تعاملي را در تمامي پلتفرمها، هدف گرفتهاست. Vulkan نيز مانند ساير APIهاي گرافيكي مثل DirectX، OpenGL و Metal ، قصد دارد بيشترين كارايي ممكن را از تعادل بين GPU و CPU به متخصصان ارائه دهد. اما نقطه تمايز Vulkan اين است كه قادر به رندركردن گرافيكهاي دوبعدي است. بهعلاوه با وجود تقسيم كار بهتر بين CPUهاي چندهستهاي، در مقايسه با OpenGL و DirectX 11 ، مصرف برق پايينتري دارد.
در ابتدا بسياري پيشبيني ميكردند كه Vulkan ادامهدهندهي مسير OpenGL باشد. اما اين پيشبيني درست نبود
زمانيكه براي اولينبار اين API توسط Khronos Group (كه مالك OpenGL نيز هست) معرفي شد، بسياري Vulkan را نسل بعدي يا OpenGL آينده تصور ميكردند اما با رونمايي از آن، اين تصورات درست از آب درنيامدند. براي مشاهده تفاوتهاي عملكرد اين دو API گرافيكي به جدول زير دقت كنيد.
OpenGL | Vulkan |
---|---|
تنها يك ماشين global state دارد | مبتني بر شيء است و فاقد global state |
state تنها به يك محتوا منحصر ميشود | مفهوم تمامي stateها در بافر دستورها قرار گرفته است |
عملكردها فقط بهصورت ترتيبي انجام ميشوند | قابليت برنامهنويسي چندرشتهاي دارد |
حافظه و همگامسازي GPU معمولا مخفي است | كنترل و مديريت همگامسازي و حافظه مقدور است |
مطالعه خطا بهصورت مداوم انجام ميشود | درايورها حين اجرا، مطالعه خطا انجام نميدهند. در عوض براي سازندگان، يك لايه اعتبارسنجي در انديشه متخصصين گرفته شده است. |
بهمنظور استاندارد سازي و ارتقاء فناوري APIهاي گرافيكي low-level در بنيادي مشترك بين Khronos و AMD، توافق شد كه شركت AMD اجزاء ساخت API گرافيكي اختصاصي خود يعني Mantle را در اختيار Khronos قرار دهد و در حقيقت ساختVulkan از اجزاء Mantle الهام گرفته است. Vulkan اولينبار در سال ۲۰۱۶ رونمايي شد و جديدترين ويرايش آن ، يعني نسخه 1.1.125 بهتازگي و در تاريخ ۱۴ اكتبر ۲۰۱۹ به بازار آمد. اين API كاملا توسط اندرويد همراهي ميشود اما به دليل حمايت اپل از API اختصاصي خود Metal ، امكان همراهي رسمي از سيستمهاي عامل IOS و Mac را ندارد. (البته جزوه رايگانخانههاي متنبازي در بازار موجود هستند كه اين مسئله را ممكن ميكنند.)
جدول زير سازگاري Vulkan با شناخته شدهترين محصولات گرافيكي را مطالعه ميكند.
نام شركت | چيپ GPU | كارت گرافيك | اندرويد | لينوكس | ويندوز |
---|---|---|---|---|---|
AMD | Navi 10 | Radeon RX 5000 series | × | √ | √ |
Vega 10 | Radeon Rx Vega series | × | √ | √ | |
Polaris 10, Polaris 11, Polaris 12 | Radeon Rx 400 series Radeon Rx 500 series | × | √ | √ | |
Tonga, Fiji, Carrizo | Radeon R9 Series and more | × | √ | √ | |
Bonaire, Hawaii, Kaveri, Kabini Temash, Mullins, Beema, Carrizo-L | Radeon HD 7790 and more, PlayStation 4, Xbox One | × | √ | √ | |
Oland, Cape Verde, Pitcairn, Tahiti | Radeon HD 77xx–7900 Series | × | × | × | |
Cayman, Trinity/Richland | Radeon HD 69xx Series, Radeon HD 7xxx–76xx Series | × | × | × | |
Cedar, Cypress, Juniper, Redwood, Palm, Sumo | Radeon HD 5000 Series, Radeon HD 6350, Radeon HD 64xx–68xx Series | × | × | × | |
R600, RV630, RV610, RV790, RV770, ... | Radeon HD 2000 Series, HD 3000, HD 4000 | × | × | × | |
Nvidia | TU10x, TU11x | GeForce 20 series, GeForce 16 series | × | × | × |
GV10x | Nvidia Titan V | × | √ | √ | |
GP10x | GeForce 10 series, Tegra X2 | × | √ | √ | |
GM10x, GM20x | GeForce GTX 750 Ti, GTX 750, GTX 860M, GeForce 900 series, Tegra X1 | √ | √ | √ | |
GK10x, GK110, GK208 | GeForce 600 series, GeForce 700 series, Tegra K1 | √ | √ | √ | |
GF10x, GF11x | GeForce 400 series, GeForce 500 series | × | × | × | |
G8x, G9x, GT20x, GT21x | GeForce 8 series, GeForce 9 series, GeForce 100 series, GeForce 200 series, GeForce 300 series | × | × | × | |
Intel | Core i3-/i5-/i7-8000, | √ | √ | √ | |
Core i3-/i5-/i7-7000, Pentium xyz, Celeron xyz | √ | √ | √ | ||
Core i3-/i5-/i7-6000, Core m3-/m5-/m7-6Yxx, Pentium G4xxx, Celeron G39xx | √ | √ | √ | ||
Core i3-/i5-/i7-6000, Core m3-/m5-/m7-6Yxx, Pentium G4xxx, Celeron G39xx | √ | √ | × | ||
Core i3-/i5-/i7-4000, Pentium G3xxx, Celeron G18xx | √ | √ | × | ||
Core i3-/i5-/i7-3000, Pentium G2xxx, Celeron G16xx | √ | √ | × | ||
Core i3-/i5-/i7-2000, Pentium Gxxx, Celeron Gxxx | × | × | × | ||
Core i3-/i5-/i7-xxx, Pentium G69xx, Celeron G1101 | × | × | × | ||
Imagination Technology | GE8200, GE8300 | √ | √ | √ | |
GE7400, GE7800, GT7200, GT7400, GT7600, GT7800, GT7900 | Apple A9, A9X, A10 Fusion, Helio X30 (MT6799) | √ | √ | √ | |
G6100, G6200, G6230, G6400, G6430, G6630, RK3368, G6050, G6060, G6100 (XE), G6110, GX6240, GX6250, GX6450, GX6650 | Apple A7, A8, A8X, MediaTek MT8173, MT8176, MediaTek MT6595M, MT6595T, MT6595M, MT6795, MT8135, Helio X10 (MT6795), LG H13, Atom Z3460, Z3480, Z3530, Z3560, Z3570, Z3580 | √ | √ | √ | |
SGX543, SGX544, SGX554 | Apple S1, A5, A5X, A6, A6X, NovaThor L8540, L8580, L9540, TI OMAP 4470, 5430, 5432, MediaTek MT5327, MT6589M, MT6589T, MT6589, MT8117, MT8121, MT8125, MT8389, Atom Z2460, Z2520, Z2560, Z2580, Z2760, Exynos 5410 | × | × | × | |
Qualcomm | Adreno 510, Adreno 530, Adreno 540,Adreno 512 | Snapdragon 430, 625, 650, 652, 660,820, 821, 835 | √ | √ | √ |
Adreno 418,Adreno 420,Adreno 430 | Snapdragon 415, 615, 616, 617, 805, 808, 810 | √ | √ | √ | |
Snapdragon 200, 208, 210, 212, 400, 410, 412, 600, 800, 801 | × | × | × | ||
ARM | Mali-G71, ... | Kirin 960, 970, Exynos 8895, MediaTek Helio P23 (MT6763T), Helio P30 | √ | √ | √ |
Mali-T860, Mali-T830, Mali-T880 | Exynos 8890, Exynos 7880, Exynos 7870, Kirin 950, 955, MediaTek MT6738, MT6750, Helio X20 (MT6797), X25 (MT6797T), P10 (MT6755), P20 (MT6757) | √ | √ | √ | |
Mali-T760, ... | Exynos 8890, Exynos 7880, Exynos 7870, Kirin 950, 955, MediaTek MT6738, MT6750, Helio X20 (MT6797) , X25 (MT6797T), P10 (MT6755), P20 (MT6757) | √ | √ | √ | |
Mali-T600 series, T720 | Exynos 8890, Exynos 7880, Exynos 7870, Kirin 950, 955, MediaTek MT6738, MT6750, Helio X20 (MT6797), X25 (MT6797T), P10 (MT6755), P20 (MT6757) | × | × | × |
۴.Mantle
Mantle يك API كم هزينه رندرينگ براي بازيهاي ويديويي سهبعدي است. AMD اولينبار در سال ۲۰۱۳ اين APIگرافيكي را با مشاركت يك شركت سازنده بازيهاي ويديويي بهنام DICE طراحي كرد تا رقيبي براي Direct3D و OpenGL در رايانههاي خانگي باشد. هرچند Mantle از Xbox One و PlayStation 4 نيز همراهي ميكند. در سال ۲۰۱۵ توسعه اختصاصي Mantle تعليق و در سال ۲۰۱۹ رسما متوقف شد و جاي خود را به API گرافيكي Vulkan داد.
توسعه APIگرافيكي Mantle در سال ۲۰۱۹ متوقف شد و جاي خود را به Vulkan داد.
يكي از قابليتهاي Mantle كاهش مواردي است كه پردازنده شديدا تحت فشار قرار ميگيرد. طراحي اين API بهگونهاي است كه به بازيها و نرمافزارها اجازه ميدهد تا بهشكل بهينهتري از GPU استفاده كنند . Mantle با كمكردن هزينه اعتبارسنجي API و سنجش بهينهتر پردازندههاي چندهستهاي، در حقيقت گلوگاههاي ايجاد شده در پردازنده را از بين ميبرد.
Mantle از GPU و APUهاي بازي زير همراهي ميكند:
نوع محصول | نام محصول | سري | توضيحات |
---|---|---|---|
GPU | Radeon | HD 7000 | - |
Radeon | HD 8000 | - | |
AMD Radeon | RX 200 | R7 و R9 | |
APU | AMD A10 | 7000 | all Steamroller-based "Kaveri" |
AMD A8 | 7000 | ||
AMD E1 | 2000 | all Jaguar-based "Kabini" and "Temash" | |
AMD E2 | 3000 | ||
AMD A4 | 1200 | ||
AMD A4 | 1350 | ||
AMD A4 | 5000 | ||
AMD A6 | 1450 | ||
AMD A6 | 5200 | ||
AMD sempron | 2650 | ||
AMD sempron | 3850 | ||
AMD Athlon | 5150 | ||
AMD Athlon | 5350 | ||
AMD E1 | Micro-6200T | all Puma-based "Beema" and "Mullins" | |
AMD A4 | Micro-6400T | ||
AMD A10 | Micro-6700T | ||
AMD E1 | 6010 | ||
AMD E2 | 6110 | ||
AMD A4 | 6210 | ||
AMD A6 | 6310 |
۵.METAL
اين API گرافيكي ، يك رابطبرنامهنويسي گرافيكي كمهزينه و low-level تحت ليسانس شركت اپل است كه اولينبار در IOS 8 بهكار گرفته شد. عملكرد Metal را درحقيقت ميتوان با تركيب دو رابطبرنامهنويسي OpenGL و OpenCL با يكديگر در يك API گرافيكي ، مشابه دانست. هدف از طراحي اين API شبيهسازي APIهاي ساير پلتفرمها مثل Vulkan و DirectX 12 براي سيستمهاي عامل IOS، Mac و tvOS بوده است. Metal يك APIگرافيكي شيءگرا است كه با زبانهاي برنامهنويسي سوئيفت و Objective-C اجرا ميشود اما مبتني بر زبان ++C نوشته شده است. اولينبار اپل در چيپ A7 از اين API استفاده كرد و از سال ۲۰۱۴، Metal در تمامي دستگاههاي iOS و از سال ۲۰۱۵ روي سيستمعامل Mac نيز نصب شده است. در سال ۲۰۱۷ و در همايش WWDC، اپل دومين نسخه Metal را معرفي كرد كه از سيستمهاي عامل macOS High Sierra، iOS 11 و tvOS 11 همراهي ميكند. در حقيقت Metal 2 در مقايسه با Metal، رابطگرافيكي متفاوتي محسوب نميشود و از همان سختافزار بهره ميبرد اما كارايي بيشتر و بهينهتري دارد.
Metal در مقايسه با OpenGL به دلايل مختلف، كارايي بهتري دارد. مهمترين اين دلايل عبارتاند از:
- محاسبه اوليه سايهسازيها (Shader) و اعتبار وضعيت از پيش تأييد شده
- همگامسازي آشكار بين GPU و CPU
- فضاي حافظه اشتراكي بين GPU و CPU
- هزينههاي كمتر درايور
- بهينهسازي قابليت چند رشتهاي بودن پردازندهها؛بهنحوي كه هر رشته از پردازنده بهطور مجزا ميتواند به GPU دستور ارسال كند.
مواردي كه ذكر شد در حقيقت، ميزان فعاليت پردازنده، براي انجام موفق دستورها اجرايي GPU را بهطرز چشمگيري كاهش ميدهد و اين به افزايش كارايي آن منجر خواهد شد چراكه با كاهش ميزان فعاليت، پردازنده ميتواند ساير وظايف خود را بهتر و سريعتر انجام دهد.
هم انديشي ها