Что использовать? Тао, SharpGL, OpenTK, совместимая с DirectX П/вызова, КСНК, многомерное, SlimDX, API для Windows пакет кодеков [закрыт]


в тот день это было легко; вы сделали свой собственный 3D-материал, затем появился DirectX, затем появился OpenGL. Для разработчиков .Net MDX было приятно. Затем XNA взял на себя MDX, но это не то же самое. XNA, похоже, очень ориентирована на игру со всеми конвейерными конвейерами контента и предварительной загрузкой фиксированных моделей и прочего.

Так где же мы сейчас находимся? Через пару дней reasearch / trial&error я чувствую, что везде, где я смотрю, я нахожу половину разработанных библиотек, библиотек с накладными расходами, серьезными ограничениями или библиотеки, которые слишком сложны.

Я хочу сделать" свободную руку " 3D вещи. Например, отображение 200k точек на экране в 3D и перемещение их со скоростью 30 кадров в секунду (изображение глубины Kinect). Я хочу сделать 3D-заставки, плагины для анализа звука и т. д. Все они не являются сборными для конвейера контента и требуют высокой производительности. И (эм) я хочу сделать это из. Net.

любой человек имеет опыт работы с библиотеками, которые легко / понятно и по-прежнему дает некоторое изрядное количество свобода и скорость?

4 59

4 ответа:

Кажется, я приземлился на OpenTK. Я думаю, что это дает более или менее прямой доступ к API OpenGL и не требует нагрузок зависимостей.

Это сравнительно легко понять. Для начала работы требуется несколько (и понятных) строк кода. Он не содержит объектов для меня, поэтому я могу изменить что-либо для каждого прохода, что отлично, потому что я в основном работаю с небезопасными указателями на память.

это, конечно, трудно совместить скорость с легкостью использования. Скорость требует разговора непосредственно с 3D API, а простота использования требует абстракции. Поэтому это должно рассматриваться как API более низкого уровня, чем некоторые другие, которые я пробовал. Если бы я хотел сделать некоторую сборную анимацию персонажей, то XNA, вероятно, был бы лучшим выбором, но для моего использования (описано выше) это кажется очень перспективным до сих пор (4-5 часов взлома).

пример кода:

private void Render()
{
   // Every frame
   GL.MatrixMode(MatrixMode.Modelview);
   GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
   GL.LoadMatrix(ref cameraMatrix);

   GL.Begin(BeginMode.Points);

   // Here I can add lots of points. I add 200k without any big problem.
   // It seems these points could have been passed in as an array pointer too,
   //  but I'll look at that later.
   GL.Vertex3(x2, y2, z2);

   GL.End();
   glControl.SwapBuffers();
}

Если вам понравился многомерных выражений, SlimDX должны быть вплоть до вашей линии. Это в основном замена для многомерных выражений, но с большим количеством сомнительных дизайнерских решений исправлены, и гораздо больше функциональности включены. Все, что у вас было с MDX, вы найдете в SlimDX в той или иной форме.

в качестве альтернативы существует еще один пакет оболочки C# для OpenGL: OpenGL DotNet. Отлично работает для меня! Проверьте это на http://www.taylaninan.com/opengl-dotnet.php .

Он обертывает OpenGL до версии 4.4 и поддерживает более 550+ расширений OpenGL. Он также поддерживает GLU, GLUT, FreeGLUT, DevIL (библиотека изображений разработчика), ILU и ILUT для DevIL.

это низкоуровневый API для этих библиотек.

мы столкнулись с подобной проблемой некоторое время назад, и следующее представляет наше мнение только, конечно. Одна из наших основных проблем заключалась в том, что библиотека должна быть универсальной, производить 3D-изображения очень хорошего качества, бесплатно и не накладывать дополнительных ограничений на установщик, т. е. как с XNA, где вы должны иметь правильные файлы установлены. Это казалось возможным источником головной боли. В конце концов мы остановились на DirectX и написали графический интерфейс на C#. Все необходимое взаимодействие с 3D было сделано с WndProc, который. Это обеспечило нам как мощь DirectX, так и простоту разработки графического интерфейса с помощью C#. Мы ни разу не пожалели об этом.