5

背景

据我所知,如果可能, WPF会进行硬件加速绘图,如果用户没有 DirectX 9+,则会回退到软件渲染。这是一个非常有趣的想法,我什至喜欢XAML的想法。

我不喜欢它的原因,以及我什至懒得学习它的原因是,虽然Windows Forms是一项 Microsoft 技术,并且不如 WPF,但它是通过Mono跨平台的,这对于 WPF 来说是不正确的,并且可能永远不会。关于 Linux/OS X 的 .NET WinForms 包装器是否会在未来撞上专利砖墙存在争议,但这超出了这个问题的
范围

问题

是否有任何用于.NETMono的可以让我使用基本的硬件加速(想想 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 框架使用。

4

3 回答 3

5

开罗呢?它有多个后端,包括 OpenGL、GDI、X 和 Quartz,几乎可以在任何设备上运行。Mono.Cairo 为其实现了一个 .NET 包装器,但我不确定这是否允许通过代码切换后端,或者是否需要为每个系统重新构建。

Cairo 被用作 Moonlight、Gtk+ 和 Mono 的 System.Drawing 实现的后端。

于 2011-12-15T00:34:03.950 回答
4

您的阵容中未提及的一个框架集是 Silverlight。它在 Windows 上进行了硬件加速,而 Moonlight 现在在 Linux 上进行了硬件加速。不确定软件回退,但我想他们必须有回退,因为它们都是为非常广泛的消费者使用而设计的。

于 2011-12-15T00:02:16.937 回答
1

OpenTK 怎么样,然后使用http://www.mesa3d.org/?自从我查看 mesa3d 以来已经有很长时间了,但它为 OpenGL 提供了软件渲染功能。

于 2012-07-01T12:53:25.927 回答