Ответы:
OpenTK является улучшением по сравнению с Tao API, так как он использует идиоматический стиль C # с перегрузкой, строго типизированными перечислениями, исключениями и стандартными типами .NET:
GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);
в отличие от Tao, который просто отражает C API:
Gl.glBegin(Gl.GL_POINTS); // double "gl" prefix
Gl.glColor3ub(255, 255, 0); // have to pass RGB values as separate args
Gl.glVertex3f(0, 1, 0); // explicit "f" qualifier
Это затрудняет портирование, но очень приятно использовать.
В качестве бонуса он обеспечивает рендеринг шрифтов, загрузку текстур, обработку ввода, аудио, математику ...
Обновление от 18 января 2016 г . : Сегодня сопровождающий OpenTK отказался от проекта , оставив его будущее неопределенным. Форумы забиты спамом. Сопровождающий рекомендует перейти на MonoGame или SDL2 #.
Обновление от 30 июня 2020 года : у OpenTK уже давно появились новые сопровождающие, и есть активное сообщество Discord. Таким образом, предыдущая рекомендация использовать другую библиотеку не обязательно верна.
Я думаю, что @korona имел в виду, поскольку это просто C API, вы можете использовать его прямо из C #, набрав столько текста:
[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);
К сожалению, вам придется делать это для каждой вызываемой функции OpenGL, и в основном это то, что Tao сделал для вас.
Дао должно быть хорошей основой.
Со своего сайта:
Tao Framework для .NET - это набор привязок для облегчения разработки кроссплатформенных мультимедийных приложений с использованием платформ .NET и Mono.
SharpGL - это проект, который позволяет использовать OpenGL в приложениях Windows Forms или WPF.
Вы можете OpenGL без оболочки и использовать его изначально на C #. Как и сказал Джефф Мак, вам придется импортировать все необходимые функции с помощью DllImport.
Он упустил из виду необходимость создания контекста, прежде чем вы сможете использовать любую из функций OpenGL. Это несложно, но есть несколько других не очень интуитивно понятных DllImports, которые нужно сделать.
Я создал пример проекта C # в VS2012 с почти минимально необходимым для работы OpenGL в Windows. Окно окрашивается только в синий цвет, но этого должно быть достаточно, чтобы вы начали. Пример можно найти на http://www.glinos-labs.org/?q=programming-opengl-csharp . Найдите внизу пример No Wrapper .
Я бы также рекомендовал Дао Framework . Но еще одно замечание:
Взгляните на эти руководства: http://www.taumuon.co.uk/jabuka/
Что бы вы хотели, чтобы эти вспомогательные библиотеки делали? Просто использовать OpenGL из C # достаточно просто и не требует дополнительных библиотек afaik.
Что касается (несколько не по теме, я знаю, но поскольку он был затронут ранее) выбора XNA против OpenGL, в некоторых случаях может быть выгодно использовать OpenGL вместо XNA (и в другом XNA вместо OpenGL ...).
Если вы собираетесь запускать приложения в Linux или Mac с помощью Mono, возможно, стоит использовать OpenGL. Кроме того, что, я думаю, не так широко известно, если у вас есть клиенты, которые собираются запускать ваши приложения в среде Citrix, то DirectX / Direct3D / XNA не будет таким экономичным выбором, как OpenGL. Причина этого в том, что приложения OpenGL могут совместно размещаться на меньшем количестве серверов (из-за проблем с производительностью один сервер не может размещать бесконечное количество экземпляров приложений), чем приложения DirectX / XNA, которым требуются выделенные виртуальные серверы для работы на оборудовании. ускоренный режим. Существуют и другие требования, такие как поддерживаемые видеокарты и т. Д., Но я остановлюсь на проблеме XNA против OpenGL. Как ИТ-архитектор, разработчик программного обеспечения и т. Д., Это необходимо учитывать, прежде чем выбирать между OpenGL и DirectX / XNA ...
Замечание: WebGL основан на OpenGL ES3 afaik ...
В качестве дальнейшего примечания, это не единственные соображения, но они могут облегчить выбор для некоторых ...
Для XNA 2.0 требуется как минимум карта шейдера 1.1. Хотя это старая технология, она есть не у всех. Некоторые новые ноутбуки (по нашему опыту планшеты Toshiba с графикой Intel) не поддерживают шейдер 1.1. XNA просто не будет работать на этих машинах.
Это серьезная проблема для нас, и мы перешли на Tao и OpenGL. Кроме того, с Tao у нас есть привязки для поддержки аудио и Lua.