背景
据我所知,WPF在可能的情况下进行硬件加速绘图,如果用户没有DirectX 9+,则会回退到软件渲染。这是一个非常有趣的想法,我甚至喜欢XAML的想法。
我不喜欢它的原因,也没有学习它的原因是,虽然Windows Forms是微软技术,且不如WPF,但通过Mono,它是跨平台的,而这对于WPF来说并不是真实的,可能永远都不会是。
关于是否会在未来出现适用于Linux/OS X的.NET WinForms包装器的专利障碍,存在争论,但这超出了本问题的范围。
问题
是否有适用于.NET和Mono的库,可让我在具备所需GPU /驱动程序的系统上使用基本的硬件加速(例如alpha合成,快速像素处理等),并提供软件回退以适应没有所需GPU /驱动程序的系统?
简言之:快速的图形处理适用于不古老的台式机和现代笔记本电脑,但对于低端netbooks等设备,需要可用的图形处理。 这不是用于游戏开发。
进一步说明
有几个技巧可以使GDI+更快。通过原始指针访问可以大大改进Set/GetPixel的性能。
使用的像素格式可以极大地改善渲染效果,32bppPArgb(32位带8位Alpha和RGB值预乘以Alpha)。
还有其他 技巧可以获得更快的速度,但对于某些目的而言,托管的GDI+仍然很慢。
我知道的框架
- Unity3D - 目前支持Mono。共享软件,有免费版本。
- TAO Framework - 看起来有些复杂,似乎不支持软件渲染。
- OpenTK - 活跃、发展良好,比TAO更好,但是也没有软件回退。
- SDL.NET - 与上述问题相同。
- MonoXNA - 与上述问题相同。
- Irrlicht - “完全跨平台,使用D3D、OpenGL和自己的软件渲染器”。
- Silverlight/Moonlight - dthorpe建议使用。Alpha质量,没有任何支持。
- Mono.Cairo - Mark H建议使用。
- AGG - 高质量、高效的软件渲染,用C++实现,有一个非官方的C#端口。
- Axiom3D - Ogre的移植版。支持Mono,开源且看起来很活跃。有前途。
我目前的选择是尝试Irrlicht,但只是因为我看不到其他选择。除此之外,尽管它似乎支持软件渲染,但我不知道它在.NET/Mono wrapper中的状态如何,而且它的支持链接是一个论坛帖子。
目前没有其他选择。
另外还有一个问题:我不知道如何“抽象”图形库。如果我意识到我做出了错误的选择,我将不知道该怎么办。
请原谅这个问题的长度。
编辑:由于这个问题有两个非常建设性的回答,我会等待一些时间,并选择得到最多赞的回答作为被采纳的答案。
另外,据说OpenGL已经在软件中实现,不仅是操作系统供应商,还有第三方提供的实现,这些实现将被OpenGL框架用于缺乏第三方驱动程序的情况。