Есть ли бесплатные библиотеки поддержки OpenGL для С#? Если да, то какой из них я использую и где найти примеры проектов?
Предоставляет ли С# классы для OpenGL?
Есть ли бесплатные библиотеки поддержки OpenGL для С#? Если да, то какой из них я использую и где найти примеры проектов?
Предоставляет ли С# классы для OpenGL?
OpenTK является улучшением по сравнению с Tao API, поскольку он использует идиоматический стиль С# с перегрузкой, строго типизированными перечислениями, исключениями и стандартными типами .NET:
GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);
в отличие от Дао, который просто отражает 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.1.2016: сегодня сопровождающий OpenTK отошел от проекта, оставив неопределенность с будущим. Форумы заполнены спамом. Сопровождающий рекомендует перейти на MonoGame или SDL2 #.
Я думаю, что это означало @korona, так как это просто 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.
Я также рекомендовал Tao Framework. Но еще одно примечание:
Взгляните на эти руководства: http://www.taumuon.co.uk/jabuka/
Вы можете OpenGL без оболочки и использовать его в С#. Как Джефф Мак сказал, вам придется импортировать все функции, которые вам нужны с DllImport.
То, что он забыл, - это создать контекст, прежде чем вы сможете использовать любую из функций OpenGL. Это не сложно, но есть несколько других не-интуитивных DllImports, которые нужно сделать.
Я создал пример проекта С# в VS2012 с почти минимальным минимумом, необходимым для запуска OpenGL в Windows. Он только рисует окно синим, но этого должно быть достаточно, чтобы вы начали. Пример можно найти в http://www.glinos-labs.org/?q=programming-opengl-csharp. Ищите пример No Wrapper внизу.
Что бы вы хотели, чтобы эти библиотеки поддержки выполняли? Просто использование OpenGL с С# достаточно простое и не требует дополнительных библиотек 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.