C ++ için XNA gibi bir şey var mı? [kapalı]


18

XNA özelliklerini seviyorum ama c ++ oyun dev almak istiyorum. Sorun şu ki, şimdi bir png dosyası yüklemeden bir pencere açmaya kadar her şey hakkında endişelenmem gerekiyor. Bu biraz sinir bozucu.

Gerçekten benim için bu sorunları çözmek için XNA bir c ++ sürümü istiyorum.


Henüz yapmadıysanız DirectX Tool Kit'e bir göz atmalısınız ... Direct3D 11 programlama için XNA Game Studio sınıf tasarımından açıkça ödünç alan bir C ++ kütüphanesi.
Chuck Walbourn

Yanıtlar:


16

SFML ve Polycode'a bakmanızı tavsiye ederim .

Bence buradaki cevaplar biraz eksik. Bazı temel XNA özelliklerini almak için Freetype, libpng, tinyxml, Ogg, Vorbis, vb. Gibi on farklı kütüphaneye bağlanmak can sıkıcı bir durum.


SFML

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

SFML, grafik, giriş, ses vb.'ye düşük ve yüksek düzeyde erişim sağlayan ücretsiz bir multimedya C ++ API'sidir. Bir anlamda, XNA'ya benzer, ancak elinizi tutmaz. Örneğin, SFML'nin bir Model sınıfı yoktur.


Oyunlarınızda Modeller kullanmayı planlıyorsanız, Assimp kullanmaya bakmalısınız .

Assimp, aşağıdaki biçimleri içe aktarmak için destek ekler:

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, yaratıcı kod için ücretsiz, açık kaynaklı, platformlar arası bir çerçevedir. Hızlandırılmış 2D ve 3D grafiklere, donanım gölgelendiricilerine, ses ve ağ programlamasına, fizik motorlarına ve daha fazlasına kolay ve basit erişim elde etmek için bir C ++ API'si veya bağımsız bir komut dosyası dili olarak kullanabilirsiniz.

Çekirdek Polycode API C ++ ile yazılmıştır ve taşınabilir yerel uygulamalar oluşturmak için kullanılabilir.

Çekirdek C ++ API'sinin üstünde, Polycode kendi derleme araçları setiyle Lua tabanlı bir komut dosyası sistemi sunar. Lua API, C ++ API'sini yansıtır ve C ++ derlemeden kolayca prototipler oluşturmak ve hatta tüm uygulamaları birden fazla platforma yayınlamak için kullanılabilir.

Polycode açık kaynak kodludur, yani perde arkasında işlerin nasıl yapıldığını öğrenebilirsiniz. Ayrıca, modelleri yüklemek için Assimp'i kullanır, böylece Assimp'e manuel olarak bağlanma konusunda endişelenmenize gerek kalmaz.


Küçük açıklama: Polycode modelleri yüklemek için assimp kullanmaz, aksine modelleri yükleyebileceği bir formata dönüştürmek için assimp tabanlı bir araca sahiptir.
cib

4

Oyun geliştirmenin her türlü yönünü ele alan yüzlerce kütüphane var. Görüntü yüklemeden pencereleri açmaya ve yönetmeye, oluşturmaya, sese, fiziğe vb.

Ne olmadığı her şeyi aynı anda elde edebileceğiniz çok sayıda "one-stop-shop" çözümü var. Bu, XNA'nın avantajlarından biridir. Motor oluşturmak için genellikle birçok kütüphaneyi bir araya getirmeniz gerekir. Bu size büyük esneklik sağlar, sanki bir bileşen eksik gibi, (nispeten) kolayca diğeri için değiştirebilirsiniz. Ancak aynı zamanda daha fazla çalışma gerektirir.

Gerçekten de, hangi programlama dilini kullanmak istediğinize neden bu kadar asıyorsunuz? Bana öyle geliyor ki XNA'yı gerçekten seviyorsunuz ve bunu oyun geliştirme için kullanmak istiyorsunuz. Öyleyse git bunu.


3

D3DX ve DXUT'u ilk başta kullanabilirsiniz, bunlar XNA gibi doldurulmaz, ancak en azından bir pencere oluşturmak, ana döngüyü çalıştırmak ve D3DX11CreateTextureFromFile () gibi bazı yararlı işlevlere sahip olmak gibi ortamın ayarlanmasına çok yardımcı olur. işaretçiyi yönetmeniz gerekecek, ancak bu o kadar da zor değil . Ayrıca, performansı artırmak veya değiştirmek istediğiniz her şeyi kendi ++ ile değiştirebileceğiniz C ++ 'da kullanabileceğiniz birçok kütüphane bulunmaktadır.

D3DX kitaplıkları ve DXUT en iyi D3D9 ve 10 için uygundur ve DXUT kaynak kodu ile birlikte gelir. DX11 için bu libs bazı işlevleri culled ama umarım onlar hala en yararlı olanları, ve şimdi iyi hatırlıyorum eğer onlar kaynak kodu biçiminde etkileri çerçeve sağlar (eğer keşfetmek için sabır varsa).

Daha düşük seviyelerde çalışırken, çerçeve piramitlerine göre çok daha fazla şey öğrendim, bu yüzden XNA kullandığınızı söyleyemem, ancak bu çoğunlukla hedeflerinize bağlıdır.


D3DX'in tüm sürümleri kullanımdan kaldırılmıştır. 'Modern' Direct3D 11.x yardımcı programları kitaplıkları , Windows 8.x SDK'sında DirectXTex , DirectXTK ve DirectXMesh artı DirectXMath'dir. Effects 11 ve DXUT11'in en son sürümü, eski kod tabanlarını taşıyan ve yalnızca Win32 masaüstü uygulamalarından memnun olan kişiler için CodePlex'te.
Chuck Walbourn

1

Sadece c ++ diline aşina iseniz, oyun geliştirmede deneyim kazanmak ve daha sonra openGL kullanarak programlama için SDL gibi basit bir kütüphane kullanmanızı tavsiye ederim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.