Чи є щось на кшталт XNA для c ++? [зачинено]


18

Мені подобаються особливості XNA, але я хочу потрапити в розробник ігор c ++. Проблема полягає в тому, що зараз мені доводиться турбуватися про все - від завантаження png-файлу до відкриття вікна. Це трохи дратує.

Я дуже хотів би, щоб версія CNA для 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 ++, який надає вам доступ до графіки, вводу, аудіо тощо з низьким та високим рівнем. Наприклад, 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 )

Полікод

http://polycode.org/features/

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

Основний API Polycode написаний на C ++ і може використовуватися для створення переносних нативних програм.

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

Полікод є відкритим джерелом, тобто ви можете дізнатися, як це робиться за лаштунками. Крім того, він використовує 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.