Подтвердить что ты не робот

Использование OpenGl с С#?

Есть ли бесплатные библиотеки поддержки OpenGL для С#? Если да, то какой из них я использую и где найти примеры проектов?

Предоставляет ли С# классы для OpenGL?

4b9b3361

Ответ 1

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 #.

Ответ 2

Я думаю, что это означало @korona, так как это просто API C, вы можете использовать его с С# напрямую с чертой многого типа:

[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);

Вам, к сожалению, нужно будет сделать это для каждой функции OpenGL, которую вы вызываете, и это в основном то, что Дао сделал для вас.

Ответ 3

Tao должен быть хорошей структурой.

Со своего сайта:

Tao Framework для .NET - это набор привязок для облегчения разработка межплатформенного медиаприложения с использованием платформы .NET и Mono.

Ответ 4

SharpGL - это проект, который позволяет использовать OpenGL в ваших приложениях Windows Forms или WPF.

Ответ 6

Вы можете OpenGL без оболочки и использовать его в С#. Как Джефф Мак сказал, вам придется импортировать все функции, которые вам нужны с DllImport.

То, что он забыл, - это создать контекст, прежде чем вы сможете использовать любую из функций OpenGL. Это не сложно, но есть несколько других не-интуитивных DllImports, которые нужно сделать.

Я создал пример проекта С# в VS2012 с почти минимальным минимумом, необходимым для запуска OpenGL в Windows. Он только рисует окно синим, но этого должно быть достаточно, чтобы вы начали. Пример можно найти в http://www.glinos-labs.org/?q=programming-opengl-csharp. Ищите пример No Wrapper внизу.

Ответ 7

Что бы вы хотели, чтобы эти библиотеки поддержки выполняли? Просто использование OpenGL с С# достаточно простое и не требует дополнительных библиотек afaik.

Ответ 8

Относительно (несколько от темы, которую я знаю, но с момента ее появления ранее) 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...

В качестве дальнейшего примечания, это не единственные соображения, но они могут сделать выбор более удобным для некоторых...

Ответ 9

XNA 2.0 требует минимум шейдерной карты 1.1. Хотя старые технологии, не у всех есть один. Некоторые новые ноутбуки (по нашему опыту, планшеты Toshiba с графикой Intel) не поддерживают шейдер 1.1. XNA просто не будет работать на этих машинах.

Это значимая проблема для нас, и мы перешли на Tao и OpenGL. Кроме того, с Tao у нас есть привязки для аудио и поддержки Lua.