Початок роботи з програмою 2d Game Dev (C ++): DirectX або OpenGL? [зачинено]


12

Отже, я студент, котрий шукає, щоб завести ногу у двері розвитку ігор, і я хочу зробити щось 2D, можливо, тетріс / космічні загарбники / щось-з-маленьким клоном взаємодії миші.

Я вказував свої пошуки у напрямку C ++ та 2d і, врешті-решт, привів до DirectX / OpenGL

Тепер, як я розумію, всі ці пакунки будуть робити для мене - це малювати речі на екрані. І ось все, що я насправді хвилюю в цьому пункті. Звук не потрібен. Вхід може бути оброблений, мабуть, stdlib.

Отже, для початківця, який намагається створити основну гру на C ++, ви б порекомендували DirectX або OpenGL? Чому? Які є основні відмінності між ними? Що є більш корисним?

Відповіді:


16

Я б рекомендував SDL ( http://www.libsdl.org/ ) для 2D, саме там я вперше розпочав роботу з графікою, і це було досить просто у використанні, хоча я навряд чи знав C ++ на той час.

Це (дзеркало) - це набір навчальних посібників, з яких я розпочав, і який був дуже корисним (вони були трохи датовані ще ~ 4 роки тому, коли я працював над ними, але я не думаю, що SDL сильно змінився, і вони все ще мають бути актуальними ).

SDL також здійснює обробку вводу, а SDL_Mixer може робити основне аудіо.

Я ніколи не працював з DirectDraw або OpenGL для 2D-матеріалів, тому не можу коментувати там, але я точно можу порекомендувати SDL.


1
Мені здалося, що SDL хороший, але дуже важко було отримати шляхи та правильно встановити налаштування.
Скайт

1
Також перегляньте lazyfoo.net/SDL_tutorials для деяких гідних навчальних посібників (включає навчальні посібники з налаштування для різних IDE).
BeanBag

Погоджено з @Skeith. Я не можу собі уявити головний біль від встановлення SDL вперше для початківців. Досить складно впоратися з деякими поширеними проблемами налаштування з любителями або навіть професіоналами. Після першого налаштування SDL, я мав змогу легко отримати будь-яку інсталяцію на все життя. Ось скільки головних болів мені довело; скільки досвіду я отримав, дізнавшись більше, ніж типово для створення бібліотеки. Занадто давно згадувати, що саме ставило мені найбільше проблем, чи які у мене проблеми, але всі інші бібліотеки було легко налаштувати.
Carter81

7

Я використовував і SDL, і SFML для своїх ігрових проектів. Я використовував SDL для готової гри, гри в тетріс, і я в основному використовував SFML як віконний шар для експериментів з шейдером. Зі свого досвіду, я повинен сказати, що SDL - це те, про що йдеться. Це простий шар прямого медіа, який дозволяє резюмувати дані, з якими працює ваш медіа (звук та відео) до рівня, з яким ви можете взаємодіяти на різних платформах. Це "все", що вона робить.

Через це вам, як правило, доводиться змішувати його з кількома іншими бібліотеками, особливо SDL_mixer, SDL_gfx та SDL_image, які забезпечують функціонал, необхідний кожному для створення ігор.

Усі ці бібліотеки також призначені для мови програмування на C, і вони слідують цим умовам. Не те, що в цьому є щось не так, але якщо ви хочете, щоб об'єктно-орієнтований підхід до того, як ви взаємодієте з io, вам, в основному, потрібно будувати цей шар самостійно.

SFML поставляється з усім, що вийшло прямо з коробки. Він має звук, має відео, змішує, має обмеження кадрів, і він орієнтований на об'єкти. Якщо це те, що ви хочете, я б рекомендував вам піти на це. SFML також має шар абстракції для деяких основних функцій в opengl (зокрема, шейджери beginShape / EndShape та пікселі). Я не думаю, що SDL не має нічого подібного, просто метод злиття з ним.

PS Не відволікайте розмову від C / C ++, але якщо ви не користуєтесь цією мовою з будь-якої конкретної причини, а хочете більш легкої, завжди є піггема. Це в основному SDL + для Python.


2
SFML також є C ++, тоді як SDL - це C. Це має значення, якщо ви насправді хочете вивчити C ++.
jsimmons

5

http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=263140&reply_id=3598844

Я погоджуюся з цими зауваженнями і думаю, що це зоряне обговорення того, чому DirectX кращий, ніж OpenGL.

Цей журнал відповідає у відповідь на Девіда в Wolfire.

Я сподіваюся, що це допоможе трохи збалансувати це. ;)

Але загалом, якщо ви використовуєте крос-платформу, рамку крос-API:

Використовуйте DirectX у Windows та OpenGL на * nix.


Чудовий прочитання =) Що таке мінне поле цього предмета ...
Найлер

6
404, сторінки не знайдено
axel22


Я отримую 404 за посиланням archive.gamedev.net / ...
Вихідний

4

http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX

Я погоджуюся з цими зауваженнями і думаю, що це зоряне обговорення того, чому OpenGL кращий за DirectX.

Однак це питання абсолютно питання думки, і DirectX абсолютно має свої переваги перед OpenGL, особливо 10 та 11 і особливо в контексті розвитку ігор.

Крім того, якщо ви вирішите піти з OpenGL, SDL - це чудова і дуже популярна бібліотека, і є багато ресурсів для вивчення OpenGL (NeHe та ін.) - але це можливо місце для іншого питання.


1
Як контрапункт на дискусію OGL проти DX, хлопці Unity явно вирішили перейти на DirectX в Windows, оскільки драйвери OpenGL для більшості відеокарт настільки погані. Я не маю посилання перед собою, але одразу на їх конференціях вони сказали щось, що відповідає водіям OGL, що є їх проблемою з аварією №1 у Windows. На щастя, рівень їх абстрагування означає, що з точки зору користувачів вас не хвилює.
Тетрад

Ми робимо бізнес-орієнтоване програмне забезпечення для візуалізації як для Unix, так і для Windows, і я можу підтвердити, що більшість проблем, які ми бачимо в Windows, пов'язані з драйверами OpenGL.
drxzcl

1

Якщо ви тільки починаєте, можливо, краще використовувати існуючий 2D двигун або фреймворк, такий як SFML .


1

Мені подобається Direct X і вже декілька років використовую його у багатьох проектах, але якщо ви навчаєтесь, слідкуйте за проблемами версій.

Я виявив, що більшість прямих x-кодів не збиратиметься в іншій версії, і це може бути пеклом, якщо ви намагаєтеся слідувати навчальному посібнику.

Я рекомендую Direct X, оскільки є функції для всього, що полегшує вас, коли ви починаєте, а потім більш досконалі способи маніпулювання речами, коли ви просуваєтесь.


1

Ігровий двигун Хаафа

Я не знаю, наскільки це актуально (я маю на увазі, що це не так, але я не думаю, що є причина, що це не повинно бути корисним), але я його використовував деякий час тому (C ++), і я дійсно насолоджувався. HGE не оновлювався з 05.08, але знову ж таки, я пам’ятаю, що це було досить просто в навчанні та швидко. Він також постачається з усілякими інструментами та помічниками, як система частинок.

У будь-якому випадку, якщо ви хочете створити фактично -game-, на відміну від вивчення того, що відбувається "під кришкою" в процесі малювання тощо, я рекомендую використовувати щось вищого рівня, а потім openGL або DirectX, або ви збираєтеся витрачати свій час на малювання речей на екрані, на відміну від створення фактичної гри. І HGE, безумовно, варто перевірити.

http://hge.relishgames.com/


0

Я в такому ж становищі, як і ви, тільки що почав працювати над розробкою ігор сам (на платформі iPhone) кілька місяців тому. Виходячи з фону C, я б фактично запропонував вам використовувати рамку (зокрема Cocos2d).

Про переваги рамки можна більше обговорити в цій публікації, але в основному вона обробляє більшу частину низькорівневої обробки з OpenGL та надає вам методи для вирішення того, що вам, швидше за все, потрібно для ігрового розробника. Вони мають велике співтовариство, є відкритим кодом, і тому, якщо вам потрібно отримати доступ до основного коду рамки / змінити будь-який його біт відповідно до ваших потреб / при необхідності перейдіть до OpenGL низького рівня - вам все одно нададуть такий вибір.

Ви можете піти шляхом прямого OpenGL, але мені це здається непосильним.

Ви, швидше за все, також захочете заглянути в різні бібліотеки фізики, які існують там - Google Chipmunk та Box2D для отримання додаткової інформації.

ура!


1
+1 за те, що не заслуговує на рівні -2. Занадто багато тролів на цьому веб-сайті без жодних причин дають негативи. Чесно кажучи, я навіть не розумію, чому вони навіть дозволяють показувати що-небудь нижче 0. Це настільки ж ідіотично, як і ютуб, що дозволяє зворотне бажання.
Carter81
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.