Начало работы с 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.


Отличное чтение =) Какое минное поле эта тема ...
Nailer

6
404, страница не найдена
axel22


Я получаю 404 по ссылке archive.gamedev.net / ....
Exilyth

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

Игровой движок Haaf

Я не знаю, насколько это актуально (я имею в виду, что это не так, но я не думаю, что есть какая-то причина, по которой его нельзя использовать), но я использовал его некоторое время назад (C ++), и я действительно получил удовольствие от этого. HGE не обновлялся с 05.08, но опять же, я помню, это было довольно просто и быстро учиться. Он также поставляется со всеми видами инструментов и помощников, как система частиц.

В любом случае, если вы хотите создать настоящую игру, а не изучать материал, который происходит «под капотом» в процессах рисования и т. Д., Я бы порекомендовал использовать что-то более высокое, чем openGL или DirectX, или вы будете тратить время на рисование чего-то на экране, а не на создание реальной игры. И HGE определенно стоит проверить.

http://hge.relishgames.com/


0

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

Преимущества фреймворка более чем обсуждаются в этом посте, но в основном он обрабатывает большую часть низкоуровневой обработки с OpenGL и предоставляет вам методы для решения того, что вам, скорее всего, потребуется для разработчика игр. У них отличное сообщество, с открытым исходным кодом, и, следовательно, если вам нужен доступ к основному коду фреймворка / изменить любой его фрагмент в соответствии с вашими потребностями / перейти на низкоуровневый OpenGL, если это необходимо - вам по-прежнему предоставляется этот выбор.

Вы можете пойти по пути прямого OpenGL, но для меня это кажется излишним.

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

ура!


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