چگونه تصمیم می گیرید از کدام API گرافیکی استفاده کنید؟ ممکن است به پلتفرمهایی که هدف شماست یا هر کدام که بهترین عملکرد خام را دارد، برگردد.
API های گرافیکی مانند OpenGL و DirectX به عنوان پل ارتباطی بین نرم افزار و سخت افزار گرافیکی مورد استفاده برای اجرای بازی ها عمل می کنند. این APIها روش های استانداردی را برای نمایش گرافیک های دو بعدی و سه بعدی روی صفحه ارائه می دهند. آنها در چند دهه گذشته برای توسعه بازی اساسی شده اند.
موتورهایی مانند Unity بین APIهای گرافیکی که استفاده میکنند، یک انتخاب را ارائه میدهند، اما چگونه میتوانید گزینه مناسب را برای بازی خود انتخاب کنید؟ با ما همراه باشید تا OpenGL را با DirectX مقایسه کنیم تا به شما ایده دهیم که کدام یک از این ابزارها برای شما بهتر است.
DirectX در مقابل OpenGL: نمای کلی ویژگی اصلی
در هسته خود، DirectX و OpenGL هر دو دارای خط لوله گرافیکی یکسانی هستند و سالهاست که دارند. هر دو API از نقاطی به نام رئوس برای ساختن گرافیک های اولیه پیچیده استفاده می کنند. هر رأس مختصات و سایر اطلاعات مهم خود را ذخیره می کند. اما روشی که هر کتابخانه از رئوس استفاده می کند متفاوت است.
آنها ممکن است عملکردهای مشابهی را انجام دهند، اما اگر با آنها کار کنید، تفاوت بین OpenGL و DirectX را متوجه خواهید شد.
DirectX در مقابل OpenGL: محدوده API
قبل از اینکه خیلی بیشتر پیش برویم، توجه به این نکته مهم است که در حالی که هر دو API گرافیکی هستند، OpenGL و DirectX دامنههای متفاوتی دارند. OpenGL یک API گرافیکی خالص است و این بدان معنی است که با هیچ چیز دیگری به جز گرافیک های دو بعدی و سه بعدی سروکار ندارد. از طرف دیگر DirectX مجموعه ای از گرافیک، صدا، شبکه و سایر API های سخت افزاری است که همه با هم کار می کنند.
در برخی موارد، OpenGL از DirectX برای انجام عملکردهایی استفاده می کند که به تنهایی نمی تواند انجام دهد. در ادامه این مقاله این تفاوت بین دو API نادیده گرفته میشود و بر عناصر گرافیکی هر ابزار تمرکز میکند.
OpenGL در مقابل DirectX: پلتفرم ها
OpenGL یک API رایگان است که توسط یک شرکت غیرانتفاعی به نام گروه Khronos اداره می شود، در حالی که DirectX توسط مایکروسافت ساخته شده است. DirectX عمدتاً روی ویندوز و ایکسباکس کار میکند و پلتفرمهای دیگر مانند لینوکس به آرامی پشتیبانی میشوند. OpenGL یک پلتفرم متقابل است که آن را برای توسعه بازی در طیف وسیعی از سیستم عامل ها و کنسول های بازی قابل استفاده می کند.
DirectX در مقابل OpenGL: منابع سخت افزاری
DirectX مدیریت سختافزار را به توسعهدهنده واگذار میکند و به شما این امکان را میدهد تا منابع را به صورت کارآمد، همانطور که به آنها نیاز دارید، تخصیص دهید. OpenGL مدیریت سخت افزار را مدیریت می کند، اما این می تواند مزایای خاص خود را داشته باشد، زیرا لازم نیست خودتان نگران مدیریت منابع باشید.
DirectX در مقابل OpenGL: مستندات
دسترسی به مستندات دقیق می تواند توسعه بازی را هنگام کار با API بسیار آسان تر کند. DirectX و OpenGL به طور منظم اسناد به روز شده و جوامع توسعه دهندگان مفید را ارائه می دهند. هر دوی این APIها بهروزرسانیهای سالانه بزرگ را دریافت میکنند تا اطمینان حاصل کنند که بهترین ویژگیهای موجود را ارائه میدهند.
استفاده از OpenGL در مقابل DirectX برای توسعه بازی
توسعه دهندگان با استفاده از OpenGL و DirectX بسیاری از بازی های زیبا و بهینه شده را در بازار مدرن ساخته اند. هنگام انتخاب یک API گرافیکی 2D/3D باید چندین نکته را در نظر بگیرید. برخی از توسعه دهندگان به سادگی به ابزاری که با آن راحت تر هستند تکیه می کنند.
OpenGL یا DirectX: پلتفرم ها
ما قبلاً روی پلتفرمها صحبت کردهایم، اما این موضوع برای توسعهدهندگان بسیار مهم است. اگر میخواهید بازیهایی برای نینتندو سوییچ، پلیاستیشن 4 یا لینوکس بسازید، باید با OpenGL یا API دیگری با پشتیبانی از آنها کار کنید. DirectX برای ویندوز و ایکس باکس ساخته شده است و سازگاری محدودی با سایر سیستم ها دارد.
OpenGL یا DirectX: سازگاری با موتور
امروزه بیشتر توسعه دهندگان بازی از موتورهایی مانند Unity و Unreal برای ساخت بازی های خود استفاده می کنند. هر دوی این موتورها از OpenGL و DirectX پشتیبانی می کنند، همانطور که دیگر موتورهای توسعه بازی چند پلتفرمی نیز پشتیبانی می کنند.
OpenGL یا DirectX: سهولت استفاده
برخی استدلال می کنند که کار با OpenGL راحت تر از DirectX است. در کنار منابع سخت افزاری، OpenGL فقط به کارهای گرافیکی رسیدگی می کند و طبیعتاً آن را ساده تر می کند. این واقعیت که در پلتفرم های بیشتری کار می کند، انتشار بازی هایی با این نیاز را آسان تر می کند.
سهولت استفاده از API گرافیکی به اندازه گذشته برای توسعه دهندگان بازی مهم نیست. با موتورهایی مانند Unity که در پشت صحنه با APIهای گرافیکی ارتباط برقرار می کنند، تنها با یک کلیک یک دکمه نیاز است تا API مورد استفاده خود را عوض کنید. بعید است که تفاوتی را در سهولت استفاده از هر API مشاهده کنید، مگر اینکه از ابتدا یک بازی ایجاد کنید.
OpenGL یا DirectX: ویژگی های گرافیکی
بعید است که تفاوت زیادی در ویژگیهای موجود بین این APIها مشاهده کنید، مگر اینکه شما یک مورد حاشیهای باشید. هر دو از قابلیتهای کارت گرافیک شما پشتیبانی میکنند، و این تنها در صورتی تغییر میکند که پردازندههای گرافیکی شاهد تغییرات چشمگیر در آینده باشند.
OpenGL یا DirectX: عملکرد بازی
بحث های زیادی بین توسعه دهندگان در مورد عملکرد این API ها وجود دارد. تصور اینکه OpenGL یا DirectX دارای تفاوتهای عملکردی قابل توجهی باشند دشوار است، اگرچه ادعای اینکه OpenGL روانتر و کارآمدتر است، بهصورت آنلاین رایج است.
تنها راه برای فهمیدن اینکه کدام یک از این APIها بهترین عملکرد را دارند، آزمایش است. به لطف سازگاری Unity با هر دو API، میتوانیم یک پروژه ایجاد کنیم و یک بازی نمونه را با هر دو API آزمایش کنیم تا یک معیار عملکرد ایجاد کنیم.
این آزمایشها با گرافیکهای دوبعدی و سه بعدی انجام شده است تا اطمینان حاصل شود که خطوط لوله متفاوت آنها عامل قابل توجهی نیست. هر تست برای 120 ثانیه گیم پلی معمولی اجرا می شود و فریم در ثانیه برای تعیین عملکرد اندازه گیری می شود. تمام آزمایشات روی یک رایانه شخصی انجام شده است.
تست عملکرد سه بعدی: Unity Carting Microgame
Unity Carting Microgame یک قالب رایگان است که شامل همه چیزهایی است که برای ساخت یک بازی مسابقه ای ساده نیاز دارید. همراه با آموزش است، اما ما بیشتر به خود بازی علاقه مندیم. ما کارتینگ Microgame را با OpenGL و DirectX ساختیم تا عملکرد آنها را مقایسه کنیم و نتایج به شرح زیر بود:
DirectX در معیار سه بعدی ما از OpenGL بهتر عمل کرد و به نرخ فریم چشمگیر در سراسر جهان دست یافت. نتایج OpenGL هنوز قابل پخش هستند.
تست عملکرد دوبعدی: Unity Platformer Microgame
همانند Carting Microgame، Unity Platformer Microgame رایگان و مملو از ابزارهای آموزشی عالی است. همانطور که انتظار می رفت، بازی دو بعدی در تست های ما عملکرد بهتری نسبت به بازی سه بعدی دارد، اما شما می توانید نتایج را برای خودتان ارزیابی کنید.
همانطور که از نتایج بالا می بینید، DirectX در تست ما به میانگین نرخ فریم بسیار بالاتری دست یافت. در حالی که تفاوت ممکن است چشمگیر به نظر برسد، هر دو نتیجه بسیار قابل بازی هستند.
OpenGL یا DirectX 11: نتیجه گیری عملکرد
در حالی که بسیاری از مردم می گویند که OpenGL بهتر از DirectX عمل می کند، API دوم در هر دو بنچمارک ما نتایج بهتری به دست آورد. این به دور از قطعیت نیست، زیرا عوامل بسیاری در دیکته کردن عملکرد یک بازی نقش دارند، به خصوص که آنها پیچیده تر می شوند.
DirectX یا OpenGL: کدام یک را باید برای توسعه بازی استفاده کنید؟
انتخاب API گرافیکی مناسب به عوامل مختلفی بستگی دارد. DirectX پرکاربردترین API گرافیکی است. بسیاری از توسعه دهندگان بازی، بازی های خود را قبل از انتقال به OpenGL برای پلتفرم های دیگر، برای ویندوز و ایکس باکس ایجاد می کنند. اگر یک بازی را منحصراً خارج از ویندوز و ایکس باکس منتشر می کنید، ممکن است از همان ابتدا از OpenGL استفاده کنید.
عملکرد نیز فاکتوری است که باید در نظر گرفته شود، اگرچه آزمایشات ما نشان می دهد که در هنگام استفاده از ابزارهای موتور مانند Unity، این نسبتاً ناچیز است. در اصل، تفاوت بین این دو API گرافیکی فقط برای کسانی مهم است که به دنبال ویژگیهای خاص هستند.