DirectX 11 در مقابل DirectX 12: چه تفاوت هایی با هم دارند و از کدام باید استفاده کنید؟
آیا DirectX 12 بهتر از DirectX 11 است؟ در این مقاله به نقاط ضعف و قدرت آن ها پرداخته ایم و آن ها را مقایسه کرده ایم …
DirectX 12 در کنار ویندوز 10 در سال 2015 منتشر شد. با انتشار آن، DirectX 12 مایکروسافت آغازگر دوره جدیدی برای گیمرها و توسعه دهندگان بازی بود. DirectX 12 که قادر به کاهش سربار CPU و در عین حال افزایش عملکرد GPU است، به سرعت نامی برای خود دست و پا کرد.
با این حال، آیا واقعاً افزایش عملکرد شما به سادگی تغییر از DirectX 11 به DirectX 12 است؟ بیایید با نگاهی به تفاوت های DirectX 11 و DirectX 12 دریابیم.
فهرست مطالب
DirectX چیست؟
همانطور که در بررسی کلی ما از Microsoft DirectX توضیح داده شد، DirectX مجموعه ای از رابط های برنامه نویسی کاربردی (API) است که برای رسیدگی به وظایف مربوط به چند رسانه ای استفاده می شود. این شامل برنامه نویسی بازی بر روی پلتفرم های مبتنی بر مایکروسافت مانند ویندوز و ایکس باکس می شود. برای ارائه برخی زمینه ها، اجازه دهید به طور خلاصه در مورد API ها صحبت کنیم.
یک API امکان برقراری ارتباط دو یا چند برنامه کامپیوتری با یکدیگر را فراهم می کند، که در بررسی کلی خود از API ها به آن می پردازیم. مثل یک گوشی موبایل به آن فکر کنید. اگر مادرتان یک لیست خرید برای شما پیامک کند، موبایل شما آن داده ها را دریافت کرده و برای شما نمایش می دهد. که اساسا یک API است.
چه تفاوت هایی بین DirectX 11 و DirectX 12 وجود دارد؟
تفاوت بین DirectX 11 و DirectX 12 چیست؟ به زبان ساده، DirectX 12 آخرین نسخه DirectX است. یکی از قابل توجه ترین تفاوت ها نحوه تعامل آنها با سخت افزار شما است. اکثر بازیهای توسعهیافته با DirectX 11 فقط از دو تا چهار هسته CPU استفاده میکنند. یکی از این هسته ها معمولاً به GPU می گوید که چه کاری انجام دهد.
سپس بازی از هستههای باقیمانده برای مدیریت تنظیمات مختلف CPU مانند ذرات بازی یا ترسیم فاصله استفاده میکند. از سوی دیگر، DirectX 12 حجم کاری یک CPU را در چندین هسته پخش می کند و به هر هسته اجازه می دهد تا به طور همزمان با GPU صحبت کند.
DirectX 12 همچنین با برخی از هشدار ها همراه است. این شامل محاسبات ناهمزمان و ارتباط بین اشیاء (PSOs) است. محاسبات ناهمزمان با اجازه دادن به بارهای کاری متعدد به صورت موازی، استفاده از GPU را افزایش می دهد. این اساسا پتانسیل کامل GPU شما را باز می کند.
جدا از رندر گرافیکی، GPU شما طیف وسیعی از وظایف دیگر مانند اجرای الگوریتم های یادگیری ماشین را انجام می دهد. با DirectX 11، پردازنده گرافیکی تنها می تواند یکی از این وظایف را در یک زمان و به ترتیب خاصی انجام دهد. وقتی این اتفاق می افتد به عملکرد ضربه می زند زیرا از منابع GPU شما به طور موثر استفاده نمی شود.
مثل یک گارسون در یک رستوران به آن فکر کنید. وقتی یک پیشخدمت سفارش شما را می گیرد، از شما می پرسند که اول چه می خواهید بنوشید. زمانی که نوشیدنی های خود را دریافت کردید، آنها از شما می پرسند که برای غذای اصلی چه می خواهید. سفارش شما به صورت مرحله ای انجام می شود. پیشخدمت قرار نیست قبل از اینکه غذای اصلی خود را بخورید از شما بپرسد که برای دسر چه می خواهید. اگرچه این کارآمد است، اما آنقدر که میتواند کارآمد نیست.
در محاسبات، یک منبع GPU متفاوت هر یک از وظایف پیشخدمت را انجام می دهد. تا زمانی که نوشیدنی خود را دریافت نکنید، منابع GPU مورد نیاز برای سفارش غذای اصلی شما بیکار خواهند بود. با محاسبات ناهمزمان DirectX 12، پیشخدمت می تواند سفارش شما را به یکباره دریافت کند، مانند یک زنجیره فست فود. این کار استفاده از GPU را به حداکثر می رساند و عملکرد بازی شما را بهبود می بخشد.
DirectX 12 همچنین ارتباط بین اشیاء (PSO) را معرفی کرد. با DirectX 11، هنگامی که هندسه یک بازی به GPU ارسال می شود تا رندر شود، تنظیمات سخت افزاری مختلف وظیفه تفسیر و رندر این داده ها را بر عهده دارند. به این رابط گرافیکی و جریان ورودی و خروجی داده می گویند که هنگام رندر کردن فریم های گرافیکی شما رخ می دهد. با این حال، رابط گرافیکی DirectX 11 کامل نیست.
این رابط شامل مجموعه ای از حالت های مختلف، از جمله حالت شطرنجی، حالت ترکیبی و حالت استنسیل عمقی، در میان اجزای دیگر است. در DirectX 11، وابستگی هایی بین این حالت های مختلف وجود دارد. در نتیجه یک وضعیت تا زمانی که حالت قبلی تعریف نشده است تکمیل نمی شود. این امر استفاده از GPU را کاهش می دهد و سربار CPU را با هزینه عملکرد افزایش می دهد.
برای دور زدن این موضوع، DirectX 12 ارتباط بین اشیاء (PSO) را معرفی کرد، اشیایی که وضعیت کل رابط گرافیکی را توصیف می کنند. PSO ها مانند یک بطری هستند که شامل حالات و اجزای مختلف مورد نیاز برای ایجاد یک تصویر است. این به GPU (کارت گرافیک) اجازه می دهد تا به جای محاسبه مجدد حالت ها بر اساس رابط گرافیکی فعلی، هر حالت وابسته را از قبل پردازش کند.
این به طور قابل توجهی سربار CPU موجود در DirectX 11 را کاهش می دهد و عملکرد را بهبود می بخشد. بنابراین، این تفاوت چگونه به نظر می رسد؟ خب، طبق گفته مایکروسافت، DirectX 12 سربار CPU را تا 50 درصد کاهش می دهد و عملکرد GPU را تا 20 درصد بهبود می بخشد. در حالی که آن ها برخی از پیشرفت های اساسی هستند، این بدان معنا نیست که شما همان نتایج را خواهید دید.
چرا تغییر از DirectX 11 به DirectX 12 ساده نیست
DirectX 11 برای اولین بار در 27 اکتبر 2009 برای ویندوز ویستا منتشر شد. بنابراین، با تولید DirectX 12 در سال 2015، شش سال فاصله بین DirectX 11 و DirectX 12 وجود دارد. در این مدت، هزاران بازی با استفاده از DirectX 11 توسعه یافته اند. متأسفانه، انتقال از DirectX 11 به DirectX 12 راه آسانی نیست.
DirectX 11 چیزی است که API سطح بالا نامیده می شود. به زبان ساده، استفاده از API های سطح بالا برای توسعه دهندگان آسان تر است. نتیجه بازی های پایدار، صیقلی و قابل بازی تر است. از سوی دیگر، DirectX 12 یک API سطح پایین و متفاوت از DirectX 11 است. در حالی که به توسعه دهندگان اجازه می دهد تا بهینه سازی را در سطح گرانول تنظیم کنند، همچنین دانش گسترده ای را برای استفاده می طلبد.
همانطور که گفته شد، یک بازی توسعه یافته در DirectX 12 بسته به دانش توسعه دهنده از API می تواند عملکرد بدتری داشته باشد. برخی از پیشرفتها با DirectX 12 ارائه میشوند، اما واقعاً به این بستگی دارد که یک توسعهدهنده چقدر میتواند آن را پیادهسازی کند. به همین دلیل، بسیاری از توسعه دهندگان ترجیح می دهند از API های سطح بالا مانند DirectX 11 استفاده کنند.
DX 11 در مقابل DX 12: کدام را باید انتخاب کنید؟
پاسخ به چند چیز بستگی دارد، مانند اینکه چه بازیی را می خواهید اجرا کنید. به عنوان مثال، Guild Wars 2 بر روی DirectX 11 اجرا می شود. حتی اگر سیستم عامل و سخت افزار شما بتواند از DirectX 12 استفاده کند، شما گزینه ای برای انتخاب DirectX 12 در Guild Wars 2 نخواهید داشت زیرا بازی از آن پشتیبانی نمی کند. این کاملاً تصمیم توسعه دهنده، ArenaNet است.
باور کنید یا نه، 9 سال طول کشید تا ArenaNet از DirectX 9 به DirectX 11 تغییر مکان داد. با این حال، برخی از بازی ها از DirectX 11 و DirectX 12 پشتیبانی می کنند، از جمله Fortnite (فورتنایت)، Battlefield 5، Shadow of Tomb Raider و موارد دیگر. کاربران می توانند در تنظیمات بازی بین DirectX 11 و DirectX 12 جابجا شوند.
اکنون، این واقعیت که برخی از بازی ها از DirectX 11 و 12 پشتیبانی می کنند، احتمالاً شما را در مورد عملکرد درون بازی متعجب کرده است. آیا انتخاب DX 11 یا DX 12 عملکرد بهتری در بازی ارائه می دهد؟ ویدیوی زیر تفاوتهای DirectX 11 و DirectX 12 را در طیف وسیعی از بازیها نشان میدهد و مشخصات حیاتی مانند میانگین فریم در ثانیه، استفاده از CPU، استفاده از GPU و موارد دیگر را با استفاده از AMD Ryzen 3600، Nvidia GeForce RTX 3060 Ti و 16 گیگابایت رم DDR4 نشان می دهد.
نتایج از بسیاری جهات شگفتانگیز هستند، با وجود تفاوتهای بصری کمی بین DX 11 و DX 12، علیرغم چندین سال تفاوت بین عرضهشان. همچنین ممکن است به تفاوتهای بارگذاریهای GPU و CPU بین هر دو نسخه DirectX توجه کرده باشید، زیرا نسخههای DX 12 هر بازی معمولاً به منابع کمتری نسبت به DX 11 قدیمیتر نیاز دارند.
علاوه بر پشتیبانی در بازی، انتخاب بین DirectX 11 و DirectX 12 به سخت افزار شما نیز بستگی دارد. تقریباً هر پردازندهی گرافیکی مدرنی از DirectX 12 پشتیبانی میکند، اما این را نمیتوان برای پردازندههای گرافیکی قدیمیتر مانند Radeon HD 4870 گفت. این پردازنده گرافیکی که در سال 2008 عرضه شد، فقط تا DirectX 10 را پشتیبانی میکند. بازی هایی که با استفاده از DirectX 11 و DirectX 12 اجرا می شوند را نمی تواند پشتیبانی کند.
آیا DirectX 12 انتخاب مناسبی برای شماست؟
روی هم رفته، تغییر از DirectX 11 به DirectX 12 آنقدرها که به نظر می رسد سیاه و سفید نیست. این به عوامل مختلفی مانند سخت افزار، نرم افزار، سیستم عامل و اینکه آیا یک بازی اصلا از هر دو پشتیبانی می کند بستگی دارد. همه اینها باید قبل از تصمیم گیری در نظر گرفته شوند و این احتمالاً برای نسل های آینده DirectX نیز صادق خواهد بود.
نظرات کاربران