Я знаю, что это очень старая ветка, но Unity может быть вам интересна
clabe45
Ответы:
129
OpenTK является улучшением по сравнению с Tao API, так как он использует идиоматический стиль C # с перегрузкой, строго типизированными перечислениями, исключениями и стандартными типами .NET:
Gl.glBegin(Gl.GL_POINTS);// double "gl" prefixGl.glColor3ub(255,255,0);// have to pass RGB values as separate argsGl.glVertex3f(0,1,0);// explicit "f" qualifier
Это затрудняет портирование, но очень приятно использовать.
В качестве бонуса он обеспечивает рендеринг шрифтов, загрузку текстур, обработку ввода, аудио, математику ...
Обновление от 18 января 2016 г . : Сегодня сопровождающий OpenTK отказался от проекта , оставив его будущее неопределенным. Форумы забиты спамом. Сопровождающий рекомендует перейти на MonoGame или SDL2 #.
Обновление от 30 июня 2020 года : у OpenTK уже давно появились новые сопровождающие, и есть активное сообщество Discord. Таким образом, предыдущая рекомендация использовать другую библиотеку не обязательно верна.
Я не думаю, что эти функции очень репрезентативны, потому что все они устарели и удалены из основного профиля OpenGl.
Arne
6
Правда, эти функции удалены из основного профиля. Но аргументы все еще актуальны. «OpenTK является улучшением по сравнению с Tao API, поскольку в нем используется идиоматический стиль C # с перегрузкой, строго типизированными перечислениями, исключениями и стандартными типами .NET»,
Сяифул Низам Яхья
1
Связанный веб-сайт сейчас недействителен для этого сообщения.
Сонни Чайлдс,
16
Я думаю, что @korona имел в виду, поскольку это просто C API, вы можете использовать его прямо из C #, набрав столько текста:
Tao Framework для .NET - это набор привязок для облегчения разработки кроссплатформенных мультимедийных приложений с использованием платформ .NET и Mono.
Вы можете OpenGL без оболочки и использовать его изначально на C #. Как и сказал Джефф Мак, вам придется импортировать все необходимые функции с помощью DllImport.
Он упустил из виду необходимость создания контекста, прежде чем вы сможете использовать любую из функций OpenGL. Это несложно, но есть несколько других не очень интуитивно понятных DllImports, которые нужно сделать.
Я создал пример проекта C # в VS2012 с почти минимально необходимым для работы OpenGL в Windows. Окно окрашивается только в синий цвет, но этого должно быть достаточно, чтобы вы начали. Пример можно найти на http://www.glinos-labs.org/?q=programming-opengl-csharp . Найдите внизу пример No Wrapper .
Дао кажется движущейся мишенью. Я обновил ссылку, потому что теперь она тоже перешла из моно в sourceforge.
Оливер
Ничего себе, ноябрь 2005 ... OpenGL не сильно изменился?
jocull
1
@JonHarrop да похоже , что они не установили редирект там , используя страницу GitHub Теперь opentk.github.io
Сноходицы
4
Что бы вы хотели, чтобы эти вспомогательные библиотеки делали? Просто использовать OpenGL из C # достаточно просто и не требует дополнительных библиотек afaik.
@MegaByte Доступ к ним должен осуществляться через вызов платформы.
Ограниченное искупление
2
Что касается (несколько не по теме, я знаю, но поскольку он был затронут ранее) выбора 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.
Ответы:
OpenTK является улучшением по сравнению с Tao API, так как он использует идиоматический стиль C # с перегрузкой, строго типизированными перечислениями, исключениями и стандартными типами .NET:
в отличие от Tao, который просто отражает C API:
Это затрудняет портирование, но очень приятно использовать.
В качестве бонуса он обеспечивает рендеринг шрифтов, загрузку текстур, обработку ввода, аудио, математику ...
Обновление от 18 января 2016 г . : Сегодня сопровождающий OpenTK отказался от проекта , оставив его будущее неопределенным. Форумы забиты спамом. Сопровождающий рекомендует перейти на MonoGame или SDL2 #.
Обновление от 30 июня 2020 года : у OpenTK уже давно появились новые сопровождающие, и есть активное сообщество Discord. Таким образом, предыдущая рекомендация использовать другую библиотеку не обязательно верна.
источник
Я думаю, что @korona имел в виду, поскольку это просто C API, вы можете использовать его прямо из C #, набрав столько текста:
К сожалению, вам придется делать это для каждой вызываемой функции OpenGL, и в основном это то, что Tao сделал для вас.
источник
Дао должно быть хорошей основой.
Со своего сайта:
источник
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.
источник