Có bất cứ điều gì như XNA cho c ++? [đóng cửa]


18

Tôi yêu các tính năng của XNA nhưng tôi muốn vào dev game c ++. Vấn đề là bây giờ tôi phải lo lắng về mọi thứ từ việc tải tệp png đến mở cửa sổ. Điều này là một chút khó chịu.

Tôi thực sự muốn một phiên bản c ++ của XNA để giải quyết những vấn đề này cho tôi.


Bạn nên xem DirectX Tool Kit nếu bạn chưa ... Đó là thư viện C ++ để lập trình Direct3D 11 mượn rõ ràng từ thiết kế lớp XNA Game Studio.
Chuck Walbourn

Câu trả lời:


16

Tôi khuyên bạn nên xem SFMLPolycode .

Tôi nghĩ rằng các câu trả lời ở đây là loại thiếu điểm. Thật khó chịu khi phải liên kết đến mười thư viện khác nhau, chẳng hạn như Freetype, libpng, tinyxml, Ogg, Vorbis, v.v., để có được một số tính năng XNA cơ bản.


SFML

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

SFML là API C ++ đa phương tiện miễn phí, cung cấp cho bạn quyền truy cập thấp và cao vào đồ họa, đầu vào, âm thanh, v.v. Theo một nghĩa nào đó, nó tương tự như XNA nhưng không nắm tay bạn nhiều. Ví dụ, SFML không có lớp Model.


Nếu bạn đang dự định sử dụng Mô hình trong các trò chơi của mình, bạn nên xem xét sử dụng Assimp .

Assimp thêm hỗ trợ để nhập các định dạng sau:

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 )

Đa cực

http://polycode.org/features/

Polycode là một khung công tác đa nền tảng, miễn phí, mã nguồn mở cho mã sáng tạo. Bạn có thể sử dụng nó như một API C ++ hoặc như một ngôn ngữ kịch bản độc lập để có thể truy cập dễ dàng và đơn giản vào đồ họa 2D và 3D được tăng tốc, trình tạo bóng phần cứng, lập trình âm thanh và mạng, công cụ vật lý và hơn thế nữa.

API Polycode lõi được viết bằng C ++ và có thể được sử dụng để tạo các ứng dụng gốc di động.

Ngoài API C ++ cốt lõi, Polycode cung cấp một hệ thống kịch bản dựa trên Lua với bộ công cụ biên dịch riêng. API Lua phản ánh API C ++ và có thể được sử dụng để dễ dàng tạo các nguyên mẫu và thậm chí xuất bản các ứng dụng hoàn chỉnh lên nhiều nền tảng mà không cần biên dịch C ++.

Polycode là mã nguồn mở, nghĩa là bạn có thể học hỏi từ cách mọi thứ được thực hiện phía sau hậu trường. Ngoài ra, nó sử dụng Assimp để tải các mô hình, do đó bạn không cần phải lo lắng về việc liên kết thủ công với Assimp.


Làm rõ nhỏ: Polycode không sử dụng assimp để tải các mô hình, mà có một công cụ dựa trên assimp để chuyển đổi các mô hình thành định dạng mà nó có thể tải.
cib

4

Có hàng trăm thư viện ngoài kia xử lý tất cả các khía cạnh của phát triển trò chơi. Từ tải hình ảnh, đến mở và quản lý cửa sổ, kết xuất, âm thanh, vật lý, v.v.

Những gì không có nhiều giải pháp "một cửa", nơi bạn có được tất cả mọi thứ cùng một lúc. Đó là một trong những lợi ích của XNA. Bạn thường phải tập hợp nhiều thư viện để xây dựng một công cụ. Điều này mang lại cho bạn sự linh hoạt tuyệt vời, vì nếu thiếu một thành phần, bạn có thể (tương đối) dễ dàng trao đổi nó cho một thành phần khác. Nhưng đồng thời, nó đòi hỏi nhiều công việc hơn.

Thực sự, tại sao bạn lại nôn nao về ngôn ngữ lập trình bạn muốn sử dụng? Dường như với tôi rằng bạn thực sự thích XNA và muốn sử dụng nó để phát triển trò chơi. Vì vậy, đi làm điều đó.


3

Ban đầu, bạn có thể sử dụng D3DX và DXUT, không được nhồi như XNA nhưng giúp ích rất nhiều cho việc thiết lập môi trường, chẳng hạn như tạo cửa sổ, chạy vòng lặp chính và có một số chức năng hữu ích như D3DX11CreateTextureFromFile () - bạn sẽ phải quản lý con trỏ mặc dù, nhưng nó không phải khó khăn. Ngoài ra còn có nhiều thư viện bạn có thể sử dụng trong C ++, bạn có thể thay thế bằng thư viện của riêng mình nếu bạn muốn cải thiện hiệu suất hoặc bất cứ điều gì bạn muốn thay đổi.

Các thư viện D3DX và DXUT phù hợp nhất cho D3D9 và 10, và DXUT đi kèm với mã nguồn của nó. Đối với DX11, họ đã loại bỏ một số chức năng từ các lib đó nhưng tôi hy vọng chúng vẫn có những chức năng hữu ích nhất và nếu tôi nhớ rõ thì bây giờ chúng cung cấp khung hiệu ứng ở dạng mã nguồn (nếu bạn có đủ kiên nhẫn để khám phá nó).

Tôi đã học được nhiều hơn khi làm việc ở các cấp thấp hơn so với các khung kim tự tháp, vì vậy tôi không thể nói bạn sử dụng XNA, nhưng điều đó phụ thuộc vào mục tiêu của bạn là chủ yếu.


Tất cả các phiên bản của D3DX đều không được dùng nữa. Các thư viện tiện ích Direct3D 11.x 'hiện đại' là DirectXTex , DirectXTKDirectXMesh cộng với DirectXMath trong SDK Windows 8.x. Phiên bản mới nhất của Effects 11DXUT11 có trên CodePlex dành cho những người đang chuyển các cơ sở mã cũ hơn và chỉ hài lòng với các ứng dụng máy tính để bàn Win32.
Chuck Walbourn

1

Nếu bạn chỉ đang làm quen với ngôn ngữ c ++, tôi khuyên bạn nên sử dụng một thư viện đơn giản như SDL để có kinh nghiệm phát triển trò chơi và sau đó lập trình bằng openGL.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.