Есть ли что-то вроде XNA для c ++? [закрыто]


18

Мне нравятся особенности XNA, но я хочу попасть в разработчика игр на c ++. Проблема в том, что теперь мне нужно беспокоиться обо всем: от загрузки файла PNG до открытия окна. Это немного раздражает.

Мне бы очень хотелось, чтобы версия XNA для C ++ решала эти проблемы самостоятельно.


Вам следует взглянуть на DirectX Tool Kit, если вы еще этого не сделали ... Это библиотека C ++ для программирования Direct3D 11, которая явно заимствована из дизайна класса XNA Game Studio.
Чак Уолборн

Ответы:


16

Я рекомендую вам взглянуть на SFML и Polycode .

Я думаю, что ответы здесь отчасти упускают суть. Раздражает необходимость ссылаться на десять различных библиотек, таких как Freetype, libpng, tinyxml, Ogg, Vorbis и т. Д., Чтобы получить некоторые базовые функции XNA.


SFML

http://www.sfml-dev.org/features.php

SFML - это бесплатный мультимедийный API C ++, который обеспечивает низко- и высокоуровневый доступ к графике, вводу, аудио и т. Д. В некотором смысле он похож на XNA, но не слишком сильно тебя держит. Например, SFML не имеет класса Model.


Если вы планируете использовать модели в своих играх, вам стоит взглянуть на использование Assimp .

Assimp добавляет поддержку для импорта следующих форматов:

Collada ( .dae )
Blender 3D ( .blend )
3ds Max 3DS ( .3ds )
3ds Max ASE ( .ase )
Wavefront Object ( .obj )
Stanford Polygon Library ( .ply )
AutoCAD DXF ( .dxf )
LightWave ( .lwo )
Modo ( .lxo )
Stereolithography ( .stl )
AC3D ( .ac )
Milkshape 3D ( .ms3d )
Quake I Mesh ( .mdl )
Quake II Mesh ( .md2 )
Quake III Mesh ( .md3 )
Quake III BSP ( .pk3 )
Biovision BVH ( .bvh )
DirectX X ( .x )
BlitzBasic 3D ( .b3d )
Quick3D ( .q3d,.q3s )
Ogre XML ( .mesh.xml )
Irrlicht Mesh ( .irrmesh )
Neutral File Format ( .nff )
Sense8 WorldToolKit ( .nff )
Object File Format ( .off )
PovRAY Raw ( .raw )
Terragen Terrain ( .ter )
3D GameStudio ( .mdl )
3D GameStudio Terrain ( .hmp )
Izware Nendo ( .ndo )

Polycode

http://polycode.org/features/

Polycode - это бесплатный кроссплатформенный фреймворк с открытым исходным кодом для креативного кода. Вы можете использовать его как C ++ API или как отдельный язык сценариев, чтобы получить простой и легкий доступ к ускоренной 2D и 3D графике, аппаратным шейдерам, звуковому и сетевому программированию, физическим движкам и многому другому.

Ядро Polycode API написано на C ++ и может использоваться для создания переносимых собственных приложений.

Помимо основного C ++ API, Polycode предлагает систему сценариев на основе Lua со своим собственным набором инструментов компиляции. Lua API отражает API C ++ и может использоваться для простого создания прототипов и даже публикации готовых приложений на нескольких платформах без компиляции C ++.

Поликод является открытым исходным кодом, что означает, что вы можете узнать, как все это делается за кулисами. Кроме того, он использует Assimp для загрузки моделей, поэтому вам не нужно беспокоиться о ручном связывании с Assimp.


Небольшое уточнение: Polycode не использует assimp для загрузки моделей, а использует инструмент на основе assimp для преобразования моделей в формат, который он может загрузить.
Cib

4

Существуют буквально сотни библиотек, которые занимаются различными аспектами разработки игр. От загрузки изображений до открытия и управления окнами, рендеринга, звука, физики и т. Д.

Чего не хватает, так это большого количества решений «одного окна», где вы получаете все сразу. Это одно из преимуществ XNA. Обычно вам нужно собрать множество библиотек для создания движка. Это дает вам большую гибкость, так как если отсутствует один компонент, вы можете (относительно) легко заменить его другим. Но в то же время это требует больше работы.

Правда, почему вы так зациклены на том, какой язык программирования вы хотите использовать? Мне кажется, что вам действительно нравится XNA и вы хотите использовать его для разработки игр. Иди и сделай это.


3

Сначала вы можете использовать D3DX и DXUT, которые не напичканы, как XNA, но очень помогают при настройке среды, например, создают окно, запускают основной цикл и имеют некоторые полезные функции, такие как D3DX11CreateTextureFromFile () - вам придется управлять указателем , хотя, но это не так, что трудно. Есть также много библиотек, которые вы можете использовать в C ++, которые вы можете заменить своими собственными, если хотите улучшить производительность или что-то еще, что хотите изменить.

Библиотеки D3DX и DXUT лучше всего подходят для D3D9 и 10, а DXUT поставляется с исходным кодом. Для DX11 они отобрали некоторые функции из этих библиотек, но я надеюсь, что они все еще имеют самые полезные функции, и, если я хорошо помню, сейчас они предоставляют структуру эффектов в форме исходного кода (если у вас есть терпение исследовать ее).

Я многому научился, работая на более низких уровнях, чем над пирамидами фреймворков, поэтому я не могу сказать, что вы используете XNA, но это в основном зависит от ваших целей.


Все версии D3DX устарели. «Современными» библиотеками утилит Direct3D 11.x являются DirectXTex , DirectXTK и DirectXMesh, а также DirectXMath в Windows 8.x SDK. Последняя версия Effects 11 и DXUT11 для CodePlex предназначена для людей, которые переносят старые кодовые базы и довольны только настольными приложениями Win32.
Чак Уолборн

1

Если вы только знакомитесь с языком c ++, я бы порекомендовал использовать простую библиотеку, такую ​​как SDL, для получения опыта в разработке игр, а затем программировать с использованием openGL.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.