OpenGL или Direct3D для нового игрового проекта Windows? Или что-то другое? - PullRequest
10 голосов
/ 02 сентября 2008

Я начинаю проект хобби-игры на Windows, который будет интенсивно использовать эффекты 3D-графики. Скорее всего, он будет написан на C ++.

Должен ли я использовать OpenGL или Direct3D для моего графического бэкэнда? Почему?

Или я должен использовать готовый графический движок, такой как OGRE 3D ? Какой?

Было бы полезно несколько ссылок "как начать". (По любой технологии или по обоим.)

Редактировать - Да, я действительно имел в виду Direct3D, а не DirectX, спасибо graham.reeds за разъяснения

Редактировать - Михай Лазар указал, что я мог бы также использовать графический движок, такой как OGRE 3D. Отредактировал вопрос, чтобы отразить эту альтернативу.

Ответы [ 20 ]

14 голосов
/ 02 сентября 2008

Начните с OpenGL, потому что на нем есть хорошие учебники и другие онлайн-ссылки. Как только вы освоите написание 3D-игры, вы сможете сами оценить ее.

Завершение игры, даже если это действительно глупо и просто, чтобы просто начать, важнее, чем выбрать правильную библиотеку. С glut вы можете получить какой-нибудь 3D-объект, который будет отображаться на вашем экране через день. Начните с NeHe учебников.

8 голосов
/ 17 сентября 2008

Если вы хотите рассмотреть C #, внимательно посмотрите на XNA. Для хобби-проектов, предполагая, что вы действительно хотите запустить и запустить игру вместо того, чтобы возиться со сложным кодом API, я не могу рекомендовать это достаточно высоко. Он становится все более зрелым, хорошо документированным и, по сравнению с D3D / OpenGL, очень быстрым и простым в использовании. В качестве бонуса, членство в Creators Club на 100 долларов в год, вы даже можете использовать его для разработки игр для Xbox 360.

7 голосов
/ 02 сентября 2008

Вы также можете основывать свою работу на людоеде , они сами предоставляют абстракцию и у них действительно хорошие инструменты. Так как это проекты, которые существуют уже более 6 лет, я думаю. Базовая библиотека на самом деле не для начинающих, так как вам нужно немного знать о разработке программного обеспечения, но я нашел много людей, которые писали игры, используя ее.

Это было бы безопаснее и быстрее, чем изучение более тяжелого материала, так как он уже абстрагирован. Плюс через пару месяцев вы все равно будете говорить на 3D жаргоне. Есть также книга, которая поможет вам начать работу с Ogre, я думаю, что она немного устарела, но в любом случае является отправной точкой.

4 голосов
/ 02 сентября 2008

Вы должны помнить, что DirectX - это набор технологий - Input, Audio и Graphics. Однако для большинства людей DX является синонимом рендерера.

На мой взгляд, D3D (или DirectGraphics) не так уж и сложен с DX8. Я не пробовал DX9 или DX10.

Бернард прав - постарайтесь абстрагироваться как можно больше. Старайтесь, чтобы вызовы DX или OGL не входили в классы объектов.

3 голосов
/ 17 сентября 2008

У меня нет опыта в OpenGL, DirectX или видеоиграх, и у меня есть видеоигра с открытым исходным кодом с Ogre3d . Это очень хорошая основа для запуска в видеоиграх: хорошо сделанный код, множество документов и информации в сети и очень хорошие начальные учебные пособия .

Движок рендеринга не зависит от DirectX / OpenGl, позже вы можете выбрать рендеринг вашей игры с OpenGL или DirectX (без изменений в вашем коде)

2 голосов
/ 02 сентября 2008

Лучшее, что можно сделать, - это абстрагироваться как можно дальше от рендерера, чтобы сделать перенос на другие технологии максимально безболезненным.

2 голосов
/ 02 сентября 2008

Я защитил диссертацию в университете по сравнению OpenGL и Direct3D. Реальные преимущества Direct3D состоят в том, что у него есть регулярный график выпуска - он всегда обновляется, чтобы воспользоваться последними достижениями в графическом оборудовании. Сколько времени прошло между выпусками OpenGL 2.0 и 3.0? Кроме того, была проделана большая работа над расширениями для OpenGL, что означает, что на некоторых картах будет работать только некоторая визуализация.

Сказав это, OpenGL будет легче начать программирование. Поскольку Direct3D в значительной степени основан на COM, у него крутая кривая обучения.

Если бы это был я, я бы выбрал DirectX вместо OpenGL. Это за счет неплатформенной независимости.

2 голосов
/ 16 сентября 2008

Для ситуации, которую вы описываете, я бы порекомендовал Direct3D.

Основная причина использования Direct3D вместо OpenGL заключается в том, что зачастую поставщики видеокарт хорошо работают с драйверами OpenGL только для своих «высокопроизводительных» карт.

Низкоуровневые карты типа игры, как правило, получают плохие и, как правило, глючные драйверы, вызывая проблемы на компьютерах вашего конечного пользователя.

Если важна переносимость, это будет серьезной причиной, чтобы взглянуть на OpenGL или Ogre.

Но если вы никогда не планируете портировать, тогда сосредоточьтесь на Direct3D, поскольку это более широко стабильная платформа с лучшей поддержкой драйверов IHV.

1 голос
/ 22 сентября 2008

Я действительно согласен с теми, кто говорит вам изучать Ogre3D. Вы сказали, что будете использовать C ++, поэтому Ogre3D - отличный выбор. XNA использует C #, и вам придется изучить различия между ним и C ++, кроме изучения самого XNA. Кроме того, XNA не является ни Open Source, ни кроссплатформенным, поэтому, если вы хотите иметь более широкие знания о разработке игр, я бы предложил сначала изучить SDL, а затем Ogre3D.

1 голос
/ 12 сентября 2008

Что нужно учитывать, так это решение о независимости платформы. Вы хотите привязать свою игру к Windows или хотите в какой-то момент выпустить ее для Mac OS X или Linux. Если вы решите, что в будущем хотите поддерживать Linux, OS X, вам нужно будет использовать OpenGL.

Сообщество Linux может проявить большую доброжелательность, если игра хотя бы частично выпущена для Linux.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...