یک بازی کامپیوتری با نوشته دایرکست ایکس

دایرکت‌ایکس ۱۱ یا دایرکت‌ایکس ۱۲: چه تفاوت‌هایی دارند و از کدام باید استفاده کرد؟

⏱️ 8 دقیقه 💬 0 سایر آموزش ها, نرم افزار

DirectX 12 در کنار ویندوز 10 در سال 2015 منتشر شد. با انتشار آن، DirectX 12 مایکروسافت دوران جدیدی را برای گیمرها و توسعه‌دهندگان بازی آغاز کرد. DirectX 12 که قادر به کاهش سربار CPU و در عین حال افزایش عملکرد GPU است، به سرعت نامی برای خود دست و پا کرد.

با این حال، آیا افزایش عملکرد شما واقعاً به سادگی تغییر از DirectX 11 به DirectX 12 است؟ بیایید با نگاهی به تفاوت‌های بین DirectX 11 و 12 به این موضوع پی ببریم.

DirectX مایکروسافت چیست؟

لوگوی 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 همچنین دارای برخی امکانات جذاب است. این شامل محاسبات ناهمزمان و اشیاء حالت خط لوله (PSO) می‌شود. محاسبات ناهمزمان با اجازه دادن به چندین بار کاری برای کار موازی، استفاده از GPU را افزایش می‌دهد. این اساساً پتانسیل کامل پردازنده گرافیکی شما را آزاد می‌کند.

جدا از رندر گرافیکی، پردازنده گرافیکی شما طیف وسیعی از وظایف دیگر، مانند اجرای الگوریتم‌های یادگیری ماشین را انجام می‌دهد. با DirectX 11، پردازنده گرافیکی فقط می‌تواند یکی از این وظایف را در یک زمان و با ترتیب خاصی انجام دهد. وقتی این اتفاق می‌افتد، عملکرد کاهش می‌یابد زیرا منابع پردازنده گرافیکی شما به طور کارآمد استفاده نمی‌شوند.

DirectX12
آن را مانند یک پیشخدمت در یک رستوران در نظر بگیرید. وقتی پیشخدمت سفارش شما را می‌گیرد، از شما می‌پرسد که ابتدا چه چیزی می‌خواهید بنوشید. به محض اینکه نوشیدنی‌های خود را دریافت کردید، از شما می‌پرسد که برای غذای اصلی چه می‌خواهید. سفارش شما به صورت مرحله‌ای انجام می‌شود. پیشخدمت قبل از اینکه غذای اصلی خود را میل کنید، از شما نمی‌پرسد که برای دسر چه چیزی میل دارید. اگرچه این روش مؤثر است، اما به اندازه کافی کارآمد نیست.

در محاسبات، یک منبع پردازنده گرافیکی متفاوت هر یک از وظایف پیشخدمت را انجام می‌دهد. تا زمانی که نوشیدنی خود را دریافت نکنید، منابع پردازنده گرافیکی مورد نیاز برای سفارش غذای اصلی شما بیکار خواهند بود. با محاسبات ناهمزمان DirectX 12، پیشخدمت می‌تواند سفارش شما را به طور همزمان، مانند یک رستوران زنجیره‌ای فست فود، دریافت کند. این امر استفاده از GPU را به حداکثر می‌رساند و عملکرد بازی شما را بهبود می‌بخشد.

DirectX 12 همچنین اشیاء حالت خط لوله (PSO) را معرفی کرد. با DirectX 11، هنگامی که هندسه یک بازی برای رندر شدن به GPU ارسال می‌شود، تنظیمات سخت‌افزاری مختلفی مسئول تفسیر و رندر این داده‌ها هستند. این خط لوله گرافیکی و جریان ورودی‌ها و خروجی‌های داده‌ای است که هنگام رندر فریم‌ها توسط GPU شما رخ می‌دهد. با این حال، خط لوله گرافیکی DirectX 11 بی‌نقص نیست.

این خط لوله شامل مجموعه‌ای از حالت‌های مختلف، از جمله حالت rasterize، حالت blend و حالت depth stencil و سایر اجزا است. در DirectX 11، بین این حالت‌های مختلف وابستگی وجود دارد. در نتیجه، یک حالت نمی‌تواند تا زمانی که حالت قبلی تعریف نشده باشد، تکمیل شود. این امر استفاده از GPU را کاهش می‌دهد و سربار CPU را به قیمت عملکرد افزایش می‌دهد.

برای حل این مشکل، DirectX 12 PSOها را معرفی کرد، اشیاء که حالت کل خط لوله گرافیکی را توصیف می‌کنند. PSOها مانند بطری‌ای هستند که شامل حالت‌ها و اجزای مختلف مورد نیاز برای ایجاد یک تصویر هستند. این به GPU اجازه می‌دهد تا هر حالت وابسته را از قبل پردازش کند، به جای اینکه دائماً حالت‌ها را بر اساس خط لوله گرافیکی فعلی دوباره محاسبه کند.

این امر به طور قابل توجهی سربار CPU موجود در DirectX 11 را کاهش می‌دهد و عملکرد را بهبود می‌بخشد. خب، این تفاوت چگونه به نظر می‌رسد؟ خب، طبق گفته مایکروسافت، DirectX 12 سربار CPU را تا 50 درصد کاهش می‌دهد و عملکرد GPU را تا 20 درصد بهبود می‌بخشد. در حالی که این‌ها پیشرفت‌های قابل توجهی هستند، این بدان معنا نیست که شما همان نتایج را خواهید دید.

مطلب مرتبط:

چرا تغییر از DirectX 11 به DirectX 12 کار ساده‌ای نیست

DirectX 11 اولین بار در ۲۷ اکتبر ۲۰۰۹ برای ویندوز ویستا منتشر شد. بنابراین، با انتشار DirectX 12 در سال ۲۰۱۵، شش سال فاصله بین 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 11 را در Guild Wars 2 انتخاب کنید زیرا بازی از آن پشتیبانی نمی‌کند. این کاملاً تصمیم توسعه‌دهنده، ArenaNet، است.

دایرکت ایکس 11 در مقابل دایرکت ایکس 12

باور کنید یا نه، نه سال طول کشید تا ArenaNet از DirectX 9 به DirectX 11 تغییر کند. با این حال، برخی از بازی‌ها از DirectX 11 و DirectX 12 پشتیبانی می‌کنند، از جمله Fortnite ، Battlefield 5، Shadow of the Tomb Raider و موارد دیگر. کاربران می‌توانند در تنظیمات بازی بین DirectX 11 و DirectX 12 تغییر دهند.

حال، این واقعیت که برخی از بازی‌ها از DirectX 11 و 12 پشتیبانی می‌کنند، احتمالاً شما را در مورد عملکرد درون بازی به فکر فرو برده است. آیا انتخاب DX 11 یا DX 12 عملکرد درون بازی بهتری را ارائه می‌دهد؟

نتایج از بسیاری جهات شگفت‌انگیز است، با وجود چندین سال اختلاف بین انتشار DX 11 و DX 12، گاهی اوقات تفاوت بصری کمی بین آنها وجود دارد. شما همچنین ممکن است متوجه تفاوت در بار GPU و CPU بین هر دو نسخه DirectX شده باشید، به طوری که نسخه‌های DX 12 هر بازی معمولاً به منابع کمتری نسبت به DX 11 قدیمی‌تر نیاز دارند.

علاوه بر پشتیبانی درون بازی، انتخاب بین DirectX 11 و DirectX 12 به سخت‌افزار شما نیز بستگی دارد. تقریباً هر پردازنده گرافیکی مدرنی از DirectX 12 پشتیبانی می‌کند، اما این موضوع در مورد پردازنده‌های گرافیکی قدیمی‌تر مانند Radeon HD 4870 صدق نمی‌کند. این پردازنده گرافیکی که در سال ۲۰۰۸ عرضه شد، فقط از DirectX 10 پشتیبانی می‌کند. این بدان معناست که قادر به اجرای اکثر بازی‌های مدرن که با استفاده از DirectX 11 و DirectX 12 اجرا می‌شوند، نخواهد بود.

آیا دایرکت‌ایکس ۱۲ انتخاب مناسبی برای شماست؟

روی هم رفته، تغییر از دایرکت‌ایکس ۱۱ به دایرکت‌ایکس ۱۲ آنقدرها هم که به نظر می‌رسد سیاه و سفید نیست. این موضوع به عوامل مختلفی مانند سخت‌افزار، نرم‌افزار، سیستم عامل و اینکه آیا یک بازی از هر دو پشتیبانی می‌کند یا خیر، بستگی دارد. همه این موارد باید قبل از تصمیم‌گیری در نظر گرفته شوند و این احتمالاً برای نسل‌های آینده دایرکت‌ایکس نیز صادق خواهد بود.

بدون دیدگاه

نظرت رو بنویس؛ مودب باشیم 😊

ورود / ثبت‌نام

ارسال دیدگاه

0 💬