Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cross-platform graphics 3D with .NET

I'd like to program a .NET app that provides a 3D render of an animated world. I'm coding on a Windows PC, but many of my target audience will be on Linux.

There are a bunch of frameworks out there that look useful, categorised into high and low level as best I can:

Low Level Graphics

  • OpenTK
  • Tao Framework seems to have been superseded by OpenTK, and the website is offline nowadays though the Mono site has some info
  • SDL

Game Development Frameworks

  • Axiom3D
  • Mono.XNA
  • Horde3D
  • AgateLib
  • OgreDotNet seems to have been superseded by Axiom3D
  • irrlicht sounds good but the .NET port hasn't had any commits in over two years

Are any of these non-contenders? What have you found to be the best option and why? I'm looking for any insightful comparisons, and recommendations for/against. Some of these claim to work as XNA substitutes. Does this literally mean you can deploy to Win/Mac/Linux as well as Xbox? Is there a catch?

I'm not yet familiar with OpenGL/DirectX/XNA APIs for 3D graphics. Are any of these easier than others to work with? Do you lose any flexibility/power/performance due to higher abstraction levels?

Note that I won't have access to a Linux machine for a month or so, so I won't be able to test my development on Linux (hence this question).

EDIT I found this table which adds a few more to the list. I've merged them above.

EDIT 2 I'm leaning towards Axiom. It gives a pretty rough landing, but shows real promise in terms of features. Here is a great summary article with user reviews. But so far the beginner documentation and sample projects are pretty hard to make use of. Tutorials all reference different versions of the API, and they all recommend you use different base classes (not included in the API) to get started. Certainly not designed with the Pit Of Success in mind, but still promising.

like image 831
Drew Noakes Avatar asked Jun 25 '10 08:06

Drew Noakes


4 Answers

Maybe not quite what you're looking for but, Unity3D is a cross platform 3D gaming environment which is based on Mono, which means that you can code the bits you need to in C#. There are indie and pro versions with the indie version being free. http://unity3d.com/

like image 100
Ira Rainey Avatar answered Sep 18 '22 00:09

Ira Rainey


Use OpenTK

  • It's OpenGL It's platform independent. It's strongly typed
like image 37
hkon Avatar answered Sep 19 '22 00:09

hkon


I'd second the idea to look at Unity, which if I remember rightly uses C# as a scripting language to let you write the game code (using Mono), allowing the actual rendering engine and so on to use native code (presumably C++).

Otherwise, I'd be wary of using Mono for anything like 3D graphics or other 'hard core' uses... anything involving GUI or rendering I'd be nervous. But that's my personal choice, if you've time to spend researching it might be worth throwing a prototype together... but i would not write a lot of C# code without the ability to test it on Linux very early in case there are big issues.

like image 42
Mr. Boy Avatar answered Sep 20 '22 00:09

Mr. Boy


You might look into using Qt and OpenGL. I imagine, however, that OpenGL is probably too low-level (read: "needlessly complex") for your particular needs.

like image 45
TreDubZedd Avatar answered Sep 19 '22 00:09

TreDubZedd