C++ OpenGL Directx
| |
elianyyf | Дата: Вторник, 06 Мая 2014, 12:00 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Знаю что есть куча вопрос на эту тему, но те, что я находил, либо не давали ответа на мой вопрос, либо ответы 2008-2009 годов, что не гуд. Написал такую же тему, только в другом разделе, никто не отвечает, может не туда написал, решил сюда тоже выложить. Собственно вопросы: 1)Вот допустим я изучил с++, взялся изучать Directx, какие возможности его? Я как бы не могу понять самую структуру написания игры. В Directx можно ли совать 3д модели, сделанные в том же 3д максе? Как создавать текстуры, уровни и интерфейс пользователя, не думаю что с++ и директа или Опена хватит для создания игры, хотя об этом только и слышу. 2)Чем отличается Directx и OpenGL, что лучше? В одной статье обосрали Опен в другой Директ, сиди и думай что юзать. Говорят что ОПен плохо стал поддерживатся но он мол кроссплатформенный. 3)Где создается сам мир игры, как и где это все рисуется, что бы заранее знать с чем придется иметь дело? 4)По поводу библиотек, кучу нашел, но не знаю какие толковые, кому не сложно назовите пару нормальных библиотек с норм документацией. 5)Можно ли на с++ писать не только под виндовс игры? Нашел разные ответы, не понятно кому верить. 6)Последовательность изучения книг по с++(Например с++ для чайников, 21 день, Страуструп), нашел на форуме только какие есть, хотя и в гугле мог бы найти, а правильную последовательность.
Кому не трудно, опишите структуру и инструменты для создания игры. Полноценную 3D. И ещё вопрос, если создавать онлайн игру, то что ещё нужно к этому всему что я наговорил?
Движки не предлагайте, их всех слышал, в планах другие вещи. Поиск на форуме юзал, не нашел конкретных ответов.
Спасибо.
|
|
| |
Fimoks | Дата: Вторник, 06 Мая 2014, 15:19 | Сообщение # 2 |
частый гость
Сейчас нет на сайте
| 1) Сам графический апи рисует примитивы(полигоны). Модели приходится самому открывать, разжимать, потом отрисовать полигоны и если там есть анимация то ещё и самому все двигать. Модели создаютmя в 3д максе(блендере), текстуры в фотошопе(гимпе) (бывают процедурные текстуры), для уровней пишешь свой редактор. 2)директ содержит апи для ввода, звука, интернета... В общем полностью все для игр. Хорошая справка, поддержка. огл только для графики, новичкам труднее разобраться. Здесь можно спорить без конечно, на самом деле оба хорошо работают, и особо заморачиватmся не стоит, попробуй сам. 3)Движок читает файл карты и делает как там написано. Ты либо берешь движок с уже готовыми картами и их загрузкой или придумываешь свой формат и редактор к нему. 4)все зависит от того, что ты хочешь. 5)виндовс, линукс, мак ос. При желании можно и другие оси, но несколько сложней. 6)хахахахахаха... Ну да как то так, страус труп обязательно к концу. ну и по патернам и алгоритмам книги, а то щас много программистов решающих задачи через костыли... онлайн? ну как минимум изучить работу с сетью или готовую библиотеку. Напиши по конкретнее, я смогу больше написать, а то тема то большая.
|
|
| |
RostakaGmfun | Дата: Суббота, 07 Июня 2014, 14:24 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| 2) Если говорить о вечном споре "DirectX vs OpenGL", могу сказать, что сравнивать надо не DirectX и OpenGL, а именно Direct3D и OpenGL. Одним из преимуществ OpenGL над Direct3D является, конечно же, кроссплатформенность. Среди отличий следует отметить, что OpenGL - сишная АПИ, вто время как АПИ D3D - объектно-ориентированный. Если сравнивать современные версии обеих графических АПИ, то можно выделить общие элементы - буфферы, текстуры и шейдеры. Просто создание и управленике этими ресурсами отличаются в D3D и OGL. В контексте последних происшествий (а именно политика Valve и Steam в отношении OpenGL, Linux и СПО), я бы не сказал, что OGL плохо поддерживается. 3) Сначала напиши классы для шейдеров, текстур, буфферов, из которых будет состоять класс объекта. Дальше напиши класс для игрового мира, куда будут добавляться объекты для отрисовки + класс камеры которая будет обновлять матрици вида и проекции. Для объектов можешь создать базовый класс, который будет представлять трансформацию и предоставлять виртуальные методы для обновления, отрисовки и уничтожения (освобождения ресурсов). В дальнейшем можешь рассмотреть вариант итеграции скриптового языка, например, Lua (интерпретатор Lua считается самым быстрым + есть много документации по биндингу Lua и C++). 4) О библиотеках. Первая потребность - создание окна, обработка событий. Тут выбор большой - SDL, SFML, GLUT, Qt, GLFW. Для загрузки текстур - DevIL или SOIL (для OGL, так как там нет поддержки для чтения форматов изображения, таких как JPEG, PNG, BMP, TGA). Для загрузки моделей - Assimp (или попробуй самому написать загрузчик, например, для OBJ). Для физики - Bullet, Nvidia PhysX, Newton.
Вместо собственного редактора рассмотри вариант написания плагинов для макса/блендера - так будет проще, если тебе требуется просто расставить объекты по местам
Для онлайн игр изучай сокеты.
Источник опыта: пишу собственный небольшой движок на C++/OpenGL3+/SDL2, раньше пробовал писать под D3D11/WinAPI
GitHub Блог
Сообщение отредактировал RostakaGmfun - Суббота, 07 Июня 2014, 14:25 |
|
| |
|