title: Cross-platform graphics 3D with .NET
body: <p>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.</p>
  <p>There are a bunch of frameworks out there that look useful, categorised into high and low level as best I can:</p>
  <p><em>Low Level Graphics</em></p>
  <ul>
  <li><a href="https://web.archive.org/web/20170325033253/http://www.opentk.com/" rel="nofollow noreferrer">OpenTK</a></li>
  <li><a href="https://www.taoframework.com/" rel="nofollow noreferrer">Tao Framework</a> seems to have been superseded by OpenTK, and the website is offline nowadays though <a href="https://www.mono-project.com/Tao/" rel="nofollow noreferrer">the Mono site</a> has some info</li>
  <li><a href="https://www.libsdl.org/" rel="nofollow noreferrer">SDL</a></li>
  </ul>
  <p><em>Game Development Frameworks</em></p>
  <ul>
  <li><a href="http://axiom3d.net/" rel="nofollow noreferrer">Axiom3D</a></li>
  <li><a href="https://monoxna.org/" rel="nofollow noreferrer">Mono.XNA</a></li>
  <li><a href="http://www.horde3d.org/" rel="nofollow noreferrer">Horde3D</a></li>
  <li><a href="http://www.agatelib.org/" rel="nofollow noreferrer">AgateLib</a></li>
  <li><a href="https://wiki.ogre3d.org/OgreDotNet" rel="nofollow noreferrer">OgreDotNet</a> seems to have been superseded by Axiom3D</li>
  <li><a href="http://irrlicht.sourceforge.net/" rel="nofollow noreferrer">irrlicht</a> sounds good but the <a href="https://sourceforge.net/projects/irrlichtnetcp/" rel="nofollow noreferrer">.NET port</a> hasn't had any commits in over two years</li>
  </ul>
  <p>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?</p>
  <p>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?</p>
  <p>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).</p>
  <p><strong>EDIT</strong> I found <a href="https://web.archive.org/web/20210210044138/https://git.freegamedev.net/FreeGameDev.net/Wiki/wiki/_pages" rel="nofollow noreferrer">this table</a> which adds a few more to the list.  I've merged them above.</p>
  <p><strong>EDIT 2</strong> I'm leaning towards Axiom.  It gives a pretty rough landing, but shows real promise in terms of features.   <a href="https://web.archive.org/web/20110807235009/http://www.devmaster.net/engines/engine_details.php?id=81" rel="nofollow noreferrer">Here is a great summary article with user reviews</a>.  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 <a href="http://blogs.msdn.com/b/brada/archive/2003/10/02/50420.aspx" rel="nofollow noreferrer">Pit Of Success</a> in mind, but still promising.</p>