背景
据我所知,WPF如果可能,进行硬件加速绘图,如果用户没有 DirectX 9+,则回退到软件渲染。这是一个非常有趣的想法,我什至喜欢XAML的想法。 .
我不喜欢它的原因,以及为什么我什至懒得学习它,是因为 while Windows Forms是微软技术,不如WPF,通过Mono跨平台,这对于 WPF 来说是不正确的,而且可能永远不会如此。
有debate关于 Linux/OS X 的 .NET WinForms 包装器将来是否会遇到专利障碍,但这超出了本问题的范围。
问题
是否有适用于 .NET 和 Mono 的库,让我可以使用基本的硬件对于没有所需 GPU/驱动程序的系统,是否可以使用软件后备加速(例如 Alpha 合成、快速像素操作等)?
简而言之:在非古代台式机和现代笔记本电脑上快速图形,但在低端上可用图形 netbooks和类似的设备。 这不适用于游戏开发。
进一步说明
有几个技巧可以使 GDI+ 更快。 Set/GetPixel 有了很大的改进 raw pointer access .
使用的像素格式可以大大改善渲染,32bppPArgb (32 位,带有 8 位 Alpha 和 RGB 值 Pre-multiplied by the alpha )。
有other tricks可以获得更快的速度,但托管 GDI+ 对于某些目的来说仍然很慢。
我知道的框架
- Unity3D -
AFAIK 不支持 Mono。支持。具有免费版本的共享软件。 - TAO Framework - 看起来有点复杂,而且似乎不支持软件渲染。
- OpenTK - 活跃,发展良好,比 TAO 更好,但也没有软件回退。
- SDL.NET - 与上面相同的问题。
- MonoXNA - 同上。
- Irrlicht - “它是完全跨平台的,使用 D3D、OpenGL 和自己的软件渲染器”。
- Silverlight/Moonlight - 建议者dthorpe 。 Alpha 质量,没有任何支持。
- Mono.Cairo - 建议者Mark H .
- AGG - 高质量、非常高效的软件渲染,用非官方的 C++ 实现 C# port .
- Axiom3D - 食人魔港口。支持 Mono,开源并且看起来还活着。前景广阔。
我当前的选择是尝试 Irrlicht,但这只是因为我别无选择。有吗?
另外,虽然看起来支持软件渲染,但是不知道.NET/Mono wrapper中它的状态如何? ,其支持链接是forum post .
目前没有。
此外还有一个问题:我不知道如何“抽象”图形库。如果后来我意识到我做出了错误的选择,我将不知道该怎么办。
请原谅这个问题的长度。
<小时/>编辑:由于这个问题有两个真正有建设性的答案,我会等待几天,然后勾选最高票数的答案作为接受的答案。
在另一则新闻中,OpenGL 似乎是 implemented in software ,无论是操作系统供应商还是第三方,这些实现将由 OpenGL 框架在缺乏第三方驱动程序的情况下使用。
最佳答案
怎么样cairo ?它有多个后端,包括 OpenGL、GDI、X 和 Quartz,并且几乎可以在任何设备上运行。 Mono.Cairo为其实现了一个 .NET 包装器,但我不确定这是否允许通过代码切换后端,或者是否需要为每个系统重建。
Cairo 用作 Moonlight、Gtk+ 和 Mono 的 System.Drawing 实现的后端。
关于.NET/Mono 硬件加速图形与软件回退,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8513428/