Графичните API, като OpenGL и DirectX, действат като мост между софтуера и графичния хардуер, използвани за игра на игри. Тези API предоставят стандартизирани методи за показване на 2D и 3D графики на екрана. Те станаха основни за развитието на игрите през последните няколко десетилетия.
Двигатели като Unity предлагат избор между графичните API, които използват, но как трябва да изберете правилната опция за вашата игра? Присъединете се към нас, докато сравняваме OpenGL с DirectX, за да ви дадем представа кой от тези инструменти е най-подходящ за вас.
DirectX срещу OpenGL: Преглед на основните функции
В основата си и DirectX, и OpenGL споделят един и същ графичен тръбопровод и то от много години. И двата API използват точки, наречени върхове, за да изградят сложни графични примитиви. Всеки връх съхранява свои собствени координати и друга важна информация. Но начинът, по който всяка библиотека използва върховете, е различен.
Те може да изпълняват подобни функции, но ще забележите разликата между OpenGL и DirectX, ако работите с тях.
DirectX срещу OpenGL: Обхват на API
Преди да продължите много по-далеч, важно е да се отбележи, че въпреки че и двата са графични API, OpenGL и DirectX имат различни обхвати. OpenGL е чистокръвен графичен API и това означава, че не се занимава с нищо друго освен с 2D и 3D графики. DirectX, от друга страна, е колекция от графики, аудио, мрежови и други хардуерни API, които работят заедно.
В някои случаи OpenGL ще използва DirectX за изпълнение на функции, които не може да направи сам. Останалата част от тази статия ще игнорира тази разлика между двата API, като се фокусира върху графичните елементи на всеки инструмент.
OpenGL срещу DirectX: Платформи
OpenGL е безплатен API, управляван от компания с нестопанска цел, наречена Khronos Group, докато DirectX е направен от Microsoft. DirectX работи предимно на Windows и Xbox, като други платформи, като Linux, бавно получават поддръжка. OpenGL е кросплатформен, което го прави използваем за разработка на игри в редица операционни системи и игрови конзоли.
DirectX срещу OpenGL: Хардуерни ресурси
DirectX оставя управлението на хардуера на разработчика, като ви дава възможност да разпределяте ресурсите ефективно, когато имате нужда от тях. OpenGL се справя с управлението на хардуера, но това може да дойде със свои собствени предимства, тъй като не е нужно да се притеснявате сами да управлявате ресурси.
DirectX срещу OpenGL: Документация
Достъпът до подробна документация може да направи разработването на игри много по-лесно при работа с API. DirectX и OpenGL предлагат редовно актуализирана документация и полезни общности за разработчици. И двата API получават големи годишни актуализации, за да гарантират, че предлагат най-добрите налични функции.
Използване на OpenGL vs. DirectX за разработка на игри
Разработчиците са направили много красиви и добре оптимизирани игри на съвременния пазар, използвайки OpenGL и DirectX. Има няколко неща, които трябва да имате предвид, когато избирате API за 2D/3D графика. Някои разработчици просто ще разчитат на инструмента, който им е най-удобен.
OpenGL или DirectX: Платформи
Вече засегнахме платформите, но това е важно съображение за разработчиците. Ако искате да правите игри за Nintendo Switch, Playstation 4 или Linux, ще трябва да работите с OpenGL или друг API с поддръжка за тях. DirectX е направен за Windows и Xbox и има ограничена съвместимост с други системи.
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 за създайте еталон за производителност.
Тези тестове са извършени както с 2D, така и с 3D графики, за да се гарантира, че техните различни тръбопроводи не са значителен фактор. Всеки тест се изпълнява за 120 секунди на редовен геймплей и кадрите в секунда се измерват, за да се определи производителността. Всички тестове са проведени на един и същ компютър.
Тест за 3D производителност: Unity Carting Microgame
Unity Carting Microgame е безплатен шаблон, който съдържа всичко необходимо, за да създадете проста състезателна игра. Той идва с уроци, но ние се интересуваме повече от самата игра. Изградихме Carting Microgame с OpenGL и DirectX, за да сравним тяхната производителност и резултатите бяха както следва:
Най-ниска | Най-високо | Средно аритметично | |
---|---|---|---|
DirectX | 331 | 848 | 365.05 |
OpenGL | 247 | 819 | 283.7 |
DirectX превъзхожда OpenGL в нашия 3D бенчмарк, постигайки впечатляваща честота на кадрите навсякъде. Резултатите на OpenGL все още са повече от възпроизвеждани.
Тест за 2D производителност: Unity Platformer Microgame
Подобно на Carting Microgame, Unity Platformer Microgame е безплатна и пълна със страхотни инструменти за обучение. Както се очакваше, 2D играта в нашите тестове се представя по-добре от 3D, но можете сами да оцените резултатите.
Най-ниска | Най-високо | Средно аритметично | |
---|---|---|---|
DirectX | 599 | 850 | 767.367 |
OpenGL | 302 | 604 | 515.417 |
Както можете да видите от резултатите по-горе, DirectX постигна много по-висока средна честота на кадрите в нашето тестване. Въпреки че разликата може да изглежда драматична, и двата резултата са много поносими.
OpenGL или DirectX 11: Заключение за производителността
Докато много хора казват, че OpenGL работи по-добре от DirectX, последният API постигна по-добри резултати и в двата ни бенчмарка. Това далеч не е убедително, като много фактори играят роля в диктуването на представянето на играта, особено когато стават по-сложни.
DirectX или OpenGL: Кое трябва да използвате за разработка на игри?
Изборът на правилния графичен API зависи от няколко фактора. DirectX е най-широко използваният графичен API. Много разработчици на игри създават своите игри за Windows и Xbox, преди да ги пренесат в OpenGL за други платформи. Ако публикувате игра изключително извън Windows и Xbox, може да се възползвате от използването на OpenGL от самото начало.
Производителността също е фактор, който трябва да се вземе предвид, въпреки че нашето тестване показва, че това е доста незначително при използване на инструменти на двигателя като Unity. По същество разликите между тези два графични API са от значение само за тези, които търсят специфични нишови функции.