C#中的密集图形应用程序(使用.NET/Mono)

C#中的密集图形应用程序(使用.NET/Mono),c#,.net,opengl,graphics,mono,C#,.net,Opengl,Graphics,Mono,如果您正在用C#编写一个2d图形密集型应用程序(如动画软件或带有自动图形控制的音乐序列器),那么图形库的最佳选择是哪一个 我想开发一个跨平台的应用程序(至少在Windows 7,Linux上移植),我只想使用C语言,避免在C++中混合代码(也由于互操作问题)。 我已经尝试过OpenTK了,但是它缺少文档,而且似乎不是很稳定(使用Mono有时会使X服务器崩溃!!!)。。。也许我错了,但我觉得这不是一个长期支持的图书馆,它将要消亡 对于.NET/Mono是否有一个好的、稳定的OpenGL包装器 我知

如果您正在用C#编写一个2d图形密集型应用程序(如动画软件或带有自动图形控制的音乐序列器),那么图形库的最佳选择是哪一个

<>我想开发一个跨平台的应用程序(至少在Windows 7,Linux上移植),我只想使用C语言,避免在C++中混合代码(也由于互操作问题)。 我已经尝试过OpenTK了,但是它缺少文档,而且似乎不是很稳定(使用Mono有时会使X服务器崩溃!!!)。。。也许我错了,但我觉得这不是一个长期支持的图书馆,它将要消亡

对于.NET/Mono是否有一个好的、稳定的OpenGL包装器

我知道Mono(Moonlight)上有Silverlight的移植,但我读到它的性能很差

谢谢。

有库,但我们决定在项目中使用OpenTK。在最新版本(1.0)中设计一些缺点。它在Win7上运行非常稳定,在Linux上也可以运行

您可以使用Simple DirectMedia层的.NET绑定,这是一个用于创建快速2D游戏的库


另一种方法可能是GTK,但我不知道它的图形性能。

现在,出于您的目的,我推荐


或者,(针对.NET/Mono的OpenGL包装器)

我已经有一段时间没有研究过使用.NET进行跨平台游戏了,但当我考虑这样做时,我发现它非常吸引人。我猜他们在使用OpenGL,我不知道Unity到底在哪里,他们是否真的提供了自己的图形API,还是提供了一套用于游戏开发的集成工具。如果您以前没有研究过它,尽管它值得一看。

既然您正在寻找一些活动的和受支持的东西,那么如何?是的。这不是我亲自使用的东西,但它们肯定已经存在很长时间了。

如果你真的需要3D,我只会考虑OpenGL。你看过开罗吗?另外,据我所知,System.Drawing在mono+gtk上的效果与在windows和.Net上的效果一样好

如果你有兴趣,你可以试试Moonlight.Desktop,稳定的版本可以很好地与silverlight 2.0控件配合使用,测试版支持silverlight 3.0和4.0中的一些,我已经在linux和windows上的mono中制作了许多类似的小应用程序,但是有一些手工修改构建脚本来构建我的项目


除非你有理由不这么做,否则我会尝试在windows上开发一个基本的silverlight桌面应用程序,并为linux/mono开发一个gtk外壳,同时始终为这两个平台保留一个核心(模型+控制器)组装项目构建。

Csgl非常稳定…
…因为它不再开发

我真的很推荐这个。它是跨平台的(linux、mac os、windows),并且仍在开发中。它相当大,有很多特点


Irrlicht和(mono-)Xna是为wirting游戏设计的。

不同意您对OpenTK的解释。几乎不需要文档,它是一个非常薄的包装,几乎没有/没有什么漏洞。它正在积极开发和改进(+瘦身!),尽管根据我的经验,它足够稳定,不需要积极的支持。我在OpenTK+Windows中使用Mono。Forms,没有什么问题,尽管Mono在某些事情上非常脆弱。@Rushyo:也许我的问题是我对OpenGL的经验很差,我几乎猜不出它的方法应该实现什么类:-/但例如,我发现很难找到使用OpenTK编写一些文本的方法。如果我学习了OpenGL basic(C++),然后切换到OpenTK会怎么样?这是一个好主意吗?至少可以说,在OpenGL中编写文本是一件痛苦的事情。OpenTK实际上包括一个名为“TextWriter”(IIRC)的类(非常过时),以帮助实现这一点。OpenGL绝对不提供这样的功能。请注意:不要将“GLUT”和其他类似的实用程序库误认为是OpenGL。他们是临时演员。OpenGL是一个非常轻薄的软件包。听起来你想要的是一个框架,而不是一个包装器。在旧版本中,OpenTK提供了比OpenGL更多的功能。随着它变得越来越苗条,它逐渐提供相同的功能。Irrlicht.Net不再开发或受支持,有一个新项目叫做Irrilicht.Net CP(),但它似乎在两年后就停止了活动!:-(…OpenTK似乎是最好的.NET选择。不是吗?我可以补充一点,我们将其用于2D地图应用程序,作为GDI的替代方案,它的性能非常好。我快速尝试了SDL.NET,我能够构建包含的示例,但启动它时遇到致命错误!哪个错误?是否正确安装了图形驱动程序?“执行本机代码时收到SIGSEGV。这通常表示mono运行时或应用程序使用的本机库中存在致命错误。”。我的图形驱动程序安装正确,Compiz运行正常,其他3D应用程序运行正常(在Ubuntu Studio 10.04 64位上)。MonoXNA站点活动(例如:)待办事项清单让我觉得这个项目很好,但它已经不存在了。CsGL的开发已经停止了很多年。兰迪·里奇(作者)已经开始了一个名为Tao的新项目。不幸的是,Tao项目似乎也死了-(死掉的项目有什么问题?正如CsGL上所说的,它可能已经变得尽可能好了。你是对的,但问题是支持:如果我发现了一个新的bug或者我需要问一些问题怎么办?我喜欢把我的软件建立在一个活的项目上,大多数时候我对相关主题不是很专业。这很公平。我认为这是一个bi。)太谨慎了,但这是你的项目,我想,因为我的应用需要复杂的图形控件(并且实时自动化,比如:或),我认为我需要最大的性能,我知道C是不是最好的(但是我想避免C++及其不纯净的OO实现),所以我想用O。