Мне недавно стало интересно то же самое, и я пришел к выводу, что OpenTK прост в использовании для этого. Я думаю, что он дает более или менее прямой доступ к API OpenGL и не требует множества зависимостей.
Это немного copy'n'paste из моего собственного вопроса и ответа , что является результатом того, что я протестировал много разных библиотек за последние несколько дней с целью сделать точку Облако на основе данных, которые я получаю от моего Kinect.
Он не обеспечивает вывод в ViewPort3D, но из моих тестов это было намного быстрее, чем при использовании WPF. Мне не удалось отобразить (и постоянно обновлять) облако точек 640x480 в WPF с приемлемой скоростью.
Это сравнительно легко понять. Для начала требуется несколько (и понятных) строк кода. Он не хранит объекты для меня, поэтому я могу что-то менять для каждого прохода, и это здорово, потому что я в основном работаю с небезопасными указателями на память.
Конечно, сложно сочетать скорость с простотой использования. Скорость требует непосредственного общения с 3D API, а простота использования требует абстракции. Поэтому это должно считаться API более низкого уровня, чем некоторые другие, которые я пробовал. Если бы я хотел сделать заранее подготовленную анимацию персонажей, то XNA, вероятно, был бы лучшим выбором, но для облаков точек это пока выглядит очень многообещающе (4-5 часов взлома).
Пример кода:
private void Render()
{
// Every frame
GL.Begin(BeginMode.Points);
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();
}