مقايسه بهترين API‌هاي گرافيكي

دوشنبه ۲۷ آبان ۱۳۹۸ - ۰۹:۳۰
مطالعه 13 دقيقه
مرجع متخصصين ايران
API گرافيكي يا رابط برنامه‌نويسي گرافيكي، ابزاري ضروري براي تعامل بين نرم‌افزار‌، درايور‌ها و سخت‌افزار گرافيكي است. با اخبار تخصصي، علمي، تكنولوژيكي، فناوري مرجع متخصصين ايران همراه باشيد تا در مورد مطرح‌ترين API‌هاي گرافيكي، بيشتر بدانيم.
تبليغات

امروزه، دنياي فناوري‌هاي سه‌بعدي به چنان پيشرفت خيره‌كننده‌اي دست يافته است كه مي‎‌توان ادعا كرد، هيچ مفهومي نيست كه تخيلات انسان توانايي تصور كردنش را داشته باشد، اما اين فناوري‎‌ها از عهده تصوير‌سازي آن برنيايند. ابزار‌هاي مدل‌سازي سه‌بعدي به ياري انسان آمده‌اند تا ايده‌هاي شخصي ما را به الگوهايي متخصصدي براي مصارف گسترده ديگر مانند سينما، پويا‌نمايي (انيميشن)، بازي‌هاي ويديويي و معماري تبديل كنند. براي چنين اهدافي، نرم‌افزار‌هاي بسياري در دسترس هستند و اينكه مناسب‌ترين ابزار كدام است، كاملا به سليقه افراد بستگي دارد. به‌علاوه روزبه‌روز بر محبوبيت نرم‌افزار‌هاي گرافيكي و رندرينگ سه‌بعدي افزوده مي‌شود مخصوصا وقتي پاي بازي‌هاي ويديويي در ميان باشد و اينجا است كه اهميت API هاي گرافيكي مشخص مي‌شود چرا‌كه، API گرافيكي ابزاري است كه به‌صورت اختصاصي براي ساده‌سازي فرايند ساخت تصاوير سه‌بعدي طراحي شده است.

رابط‌ برنامه‌نويسي نرم‌افزار متخصصدي يا Application Programming Interface كه به اختصار به آن رابط برنامه‌نويسي گرافيكي يا API گرافيكي نيز گفته‌ مي‌شود ابزاري است كه فرايند ساخت گرافيك را در تمامي بخش‌هاي كامپيوتر، آسان مي‌كند. امروزه استفاده از API براي سازندگان سخت‌افزار‌هاي گرافيك رايانه‌اي، يك ضرورت اجتناب ناپذير است؛ چرا‌كه برنامه‌نويس‌ها با وجود اينكه نياز به استفاده مستقيم از سخت‌افزار‌هاي ويژه‌اي مثل كارت‌هاي گرافيك دارند، بايد به اين سخت‌افزار‌ها دسترسي مجازي هم داشته باشند.

اما پيش از آن‌كه به معرفي و مقايسه مطرح‌ترين APIهاي گرافيكي موجود بپردازيم، لازم است با مفهوم ديگري با عنوان lower-level graphics API، بيشتر آشنا شويم. شايد با ترجمه تحت‌لفظي lower-level اين سوء‌تفاهم براي مخاطب ايجاد شود كه چرا پيشرفته‌ترين و به‌روز‌ترين API‌‌هاي گرافيكي موجود، در دسته‌بندي lower-level يا سطح پايين قرار گرفته‌اند؟ براي درك بهتر فلسفه‌ي اين طبقه‌بندي، تصوير زير را مشاهده كنيد.

  • مستطيل سبز: بازي ويديويي
  • مستطيل قرمز: درايور‌ها
  • مستطيل زرد: موتور بازي
  • نقطه‌چين: API گرافيكي
مرجع متخصصين ايران مقايسه 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 گرافيكي مطرح و پيشرو بيشتر آشنا شويم.

۱. دايركت ايكس ۱۲

مرجع متخصصين ايران مقايسه 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

مرجع متخصصين ايران مقايسه APIهاي گرافيكي

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

مرجع متخصصين ايران مقايسه APIهاي گرافيكي

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

مرجع متخصصين ايران مقايسه APIهاي گرافيكي

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هاي گرافيكي

اين 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 را به‌طرز چشمگيري كاهش مي‌دهد و اين به افزايش كارايي آن منجر خواهد شد چرا‌كه با كاهش ميزان فعاليت، پردازنده مي‌تواند ساير وظايف خود را بهتر و سريع‌تر انجام دهد.

تبليغات
جديد‌ترين مطالب روز

هم انديشي ها

تبليغات

با چشم باز خريد كنيد
اخبار تخصصي، علمي، تكنولوژيكي، فناوري مرجع متخصصين ايران شما را براي انتخاب بهتر و خريد ارزان‌تر راهنمايي مي‌كند
ورود به بخش محصولات