Модели из .x файлов в OpenGL, разница между DirectX и OpenGL - PullRequest
1 голос
/ 15 декабря 2011

У меня небольшой опыт использования 3D-моделей, экспортируемых в файлы .x в DirectX. Например, чтобы сделать водную поверхность или некоторые объекты звездой, автомобилем, травой или чем-то еще. Могу ли я сделать это в OpenGl так же, как в DirectX? Я имею в виду использование файла .x для рендеринга 3D-модели? Или другой файл, или это плохой путь? Если это плохой путь, что мне делать?

Ситуация: проект простой 3D-игры OpenGL + C #, я рендерил ландшафт с карты высоты, и мне нужно улучшить его с помощью объектов, травы, воды, телепортов ... поэтому я нахожу простой способ рендеринга 3D-объектов.

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Могу ли я сделать это в OpenGl так же, как в DirectX?

Да и нет. Позвольте мне объяснить.

Формат файла DirectX .x появился на свет с DirectX 3, который был полным беспорядком. Загрузка даже самой простой геометрии была ужасно утомительной задачей. По этой причине в среду Direct3D была добавлена ​​поддержка загрузки геометрии модели из файлов.

Однако DirectX никогда не применял определенный формат файла, и по мере его развития, где-то около версии 7 Direct3D стал пригодным для использования. Как только геометрия в Direct3D стала чем-то простым, формат файла .x больше не был необходим. И, честно говоря, существует очень мало серьезных программ, которые на самом деле используют .x для своих активов.

OpenGL никогда не нуждался во встроенном формате, потому что настройка и отрисовка геометрии, которая, конечно, уже была прочитана в память, может управляться всего за 10 строк кода Си. Таким образом, единственная трудность заключается в разборе формата файла на структуры в памяти. Это не задача для API, предназначенного для рисования, но для библиотек, предназначенных для ввода / вывода.

Короче говоря: OpenGL не имеет встроенной поддержки для какого-либо формата файла, но вы можете использовать любой формат файла, который вам нравится, и использовать его в OpenGL. Формат файла .x хорошо документирован, и вы можете найти готовые библиотеки для загрузки или записи своих собственных.

1 голос
/ 15 декабря 2011

Короткий ответ - нет.Вы не можете сделать это в OpenGL.Во-первых, позвольте мне уточнить, что здесь происходит.

DirectX, как и OpenGL, представляет собой мощный графический API.Несмотря на различия в отдельных функциях, вы можете считать их почти идентичными.

Однако DirectX сильно отличается от OpenGL.В частности, Microsoft имеет множество инструментов и библиотек, построенных поверх DirectX.Например, библиотека XNA, надстройки Visual Studio и т. Д.

Когда у вас есть файл «.x», вы действительно используете часть дополнительных библиотек и механизмов, построенных поверхDirectX для загрузки и отображения модели.

Хотя существует множество библиотек для загрузки моделей и их отображения в OpenGL, они не «в коробке», как в DirectX.

Для вашей игры, если вы собираетесь использовать OpenGL, я бы порекомендовал вам придерживаться другого формата файлов для ваших 3D-ресурсов.COLLADA была бы хорошей отправной точкой.

...