Фон
Насколько я знаю, WPF делает рисование с аппаратным ускорением, если это возможно, с откатом к программному рендерингу, если у пользователя нет DirectX 9+.Это очень интересная идея, и мне даже нравится идея XAML .
Причина, по которой она мне не нравится, и почему я даже не удосужилась ее изучить, заключается в том, чтов то время как Windows Forms является технологией Microsoft и уступает WPF, она кроссплатформенная через Mono , что не так для WPF и, вероятно, никогда не будет.
Есть дискуссия о том, ударит ли оболочка .NET WinForms для Linux / OS X в будущем в патентной кирпичной стене, но это выходит за рамки этого вопроса.
Вопрос
Есть ли библиотека для .NET и Mono , которая позволит мне использовать базовое аппаратное ускорение (например, альфа-композитинг, быстрое манипулирование пикселями и т. д.) с программным обеспечением откат для систем без необходимых графических процессоров / драйверов?
Короче говоря: быстрая графика на не древнихнастольные компьютеры и современные ноутбуки, но годная к употреблению графика на низком уровне нетбуков и аналогичных устройств. Это не для разработки игр .
Дополнительные примечания
Существует несколько приемов, позволяющих ускорить GDI +.Set / GetPixel значительно улучшены за счет доступа к необработанному указателю .
Используемый формат пикселей может значительно улучшить рендеринг, 32bppPArgb (32-битный с 8-битными значениями Alpha и RGB Предварительно умножается на альфа ).
Есть другие трюки , которые могут получать более высокие скорости, но управляемый GDI + все еще медленен для некоторых целей.
Рамки, которые я знаю
- Unity3D -
AFAIK не поддерживает Mono. Поддерживает.Условно-бесплатная программа с бесплатной версией. - TAO Framework - выглядит немного сложнее и, похоже, не поддерживает рендеринг программного обеспечения.
- OpenTK - Active,хорошо развита и лучше, чем TAO, но также не имеет программного обеспечения.
- SDL.NET - та же проблема, что и выше.
- MonoXNA -То же, что и выше.
- Irrlicht - «Это полностью кроссплатформенное приложение, использующее D3D, OpenGL и собственный программный рендер».
- Silverlight / Лунный свет - Предложено dthorpe .Альфа-качество, никакой поддержки.
- Mono.Cairo - Предложено Mark H .
- AGG - Высокое качествоочень эффективный программный рендеринг, реализованный на C ++ с неофициальным C # портом .
- Axiom3D - порт Ogre.Поддерживает Mono, с открытым исходным кодом и кажется живым.Обещание.
Мой текущий выбор попробовать Irrlicht, но только потому, что я не вижу альтернативы.
Кроме того, несмотря на то, что кажется, что он поддерживает рендеринг программного обеспечения, я не знаю, каково его состояние в .NET / Mono обертке , и ссылка на его поддержку - сообщение на форуме .
нет на данный момент.
Кроме того, есть еще одна проблема: я понятия не имею, как«абстрактный» вокруг графической библиотеки.Если в дальнейшем я пойму, что сделал неправильный выбор, я не буду знать, что делать.
Пожалуйста, извините за длину этого вопроса.
Редактировать: Поскольку на этот вопрос было два действительно конструктивных ответа, я подожду несколько дней и выберу наиболее одобренный в качестве принятого ответа.
В другой новости кажется, что OpenGL реализован в программном обеспечении , как поставщиками ОС, так и сторонними разработчиками, и эти реализации будут использоваться средами OpenGL при отсутствии драйверов сторонних производителей.