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

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

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

108
задан MegaByte 11 февр. '09 в 12:22
источник поделиться
9 ответов

OpenTK является улучшением по сравнению с API Tao, поскольку он использует идиоматический стиль С# с перегрузкой, строго типизированные перечисления, исключения и стандартные типы .NET:

GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);

в отличие от Tao, который просто отражает API C:

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

119
ответ дан Iraimbilanja 07 мая '09 в 18:53
источник поделиться

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

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

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

15
ответ дан Jeff Mc 07 мая '09 в 18:26
источник поделиться

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

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

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

14
ответ дан Ólafur Waage 11 февр. '09 в 12:35
источник поделиться

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

8
ответ дан dharmatech 26 окт. '12 в 5:50
источник поделиться

Я также рекомендовал Tao Framework. Но еще одно примечание:

Взгляните на эти руководства: http://www.taumuon.co.uk/jabuka/

6
ответ дан Oliver 11 февр. '09 в 12:41
источник поделиться

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

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

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

5
ответ дан Harry Glinos 23 окт. '13 в 1:26
источник поделиться

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

3
ответ дан korona 11 февр. '09 в 12:27
источник поделиться

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

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

1
ответ дан Aycox 03 сент. '14 в 11:36
источник поделиться

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

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

0
ответ дан Chris Masterton 07 мая '09 в 18:12
источник поделиться

Другие вопросы по меткам