【发布时间】:2021-01-04 00:32:39
【问题描述】:
背景
据我所知,WPF 会尽可能进行硬件加速绘图,如果用户没有 DirectX 9+,则会回退到软件渲染。这是一个非常有趣的想法,我什至喜欢XAML的想法。
我不喜欢它的原因,以及我什至懒得学习它的原因是,虽然Windows Forms 是 Microsoft 技术,不如 WPF,但它是通过 Mono 跨平台的,有点对于 WPF 来说,情况并非如此,而且可能永远不会。
关于 Linux/OS X 的 .NET WinForms 包装器是否会在未来遇到专利障碍,有debate,但这超出了这个问题的范围。
问题
是否有任何 .NET 和 Mono的库可以让我使用基本的硬件加速(想想 alpha 合成、快速像素处理等)并为没有所需 GPU/驱动程序的系统提供软件后备?
简而言之:在非古代台式机和现代笔记本电脑上快速图形,但在低端 netbooks 和类似设备上可用图形。 这不适用于游戏开发。
补充说明
有几个技巧可以让 GDI+ 更快。 raw pointer access 大大改进了 Set/GetPixel。
使用的像素格式可以大大提高渲染,32bppPArgb(32 位,8 位 Alpha 和 RGB 值Pre-multiplied by the alpha)。
有othertricks 可以获得更快的速度,但托管 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 框架使用。
【问题讨论】:
标签: .net graphics mono hardware-acceleration fallback