背景
据我所知,如果可能, WPF会进行硬件加速绘图,如果用户没有 DirectX 9+,则会回退到软件渲染。这是一个非常有趣的想法,我什至喜欢XAML的想法。
我不喜欢它的原因,以及我什至懒得学习它的原因是,虽然Windows Forms是一项 Microsoft 技术,并且不如 WPF,但它是通过Mono跨平台的,这对于 WPF 来说是不正确的,并且可能永远不会。关于 Linux/OS X 的 .NET WinForms 包装器是否会在未来撞上专利砖墙存在争议,但这超出了这个问题的
范围。
问题
是否有任何用于.NET和Mono的库可以让我使用基本的硬件加速(想想 alpha 合成、快速像素操作等),并为没有所需 GPU/驱动程序的系统提供软件后备?
简而言之:非古代台式机和现代笔记本电脑上的快速图形,但低端上网本和类似设备上的可用图形。这不是为了游戏开发。
进一步说明
有几个技巧可以让 GDI+ 更快。原始指针访问大大改进了 Set/GetPixel 。
使用的像素格式可以大大提高渲染效果,32bppPArgb(32 位带 8 位 Alpha 和 RGB 值预乘以 alpha)。
还有其他 技巧可以获得更快的速度,但托管 GDI+ 在某些方面仍然很慢。
我知道的框架
- Unity3D -
AFAIK 不支持 Mono。做。免费版共享软件。 - TAO 框架- 看起来有点复杂,似乎不支持软件渲染。
- 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 包装器中的状态如何,它的支持链接是一个论坛帖子。
目前没有。
此外还有一个问题:我不知道如何围绕图形库“抽象”。如果以后我意识到我做出了错误的选择,我将不知道该怎么做。
请原谅这个问题的长度。
编辑:由于这个问题有两个非常有建设性的答案,我会等几天,然后将最受支持的答案打勾作为接受的答案。
在另一个新闻中,OpenGL 似乎是在软件中实现的,无论是由操作系统供应商还是由第三方实现,这些实现将在缺乏第三方驱动程序的情况下被 OpenGL 框架使用。