Відповіді:
OpenTK - це покращення порівняно з API Tao, оскільки він використовує ідіоматичний стиль C # з перевантаженням, сильно набраними перерахунками, винятками та стандартними типами .NET:
GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);
на відміну від Дао, який просто відображає 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 січня 2016 року . Сьогодні технічний керівник OpenTK відійшов від проекту , залишивши його майбутнє невизначеним. Форуми заповнені спамом. Обслуговувач рекомендує перейти до MonoGame або SDL2 #.
Оновлення 30 червня 2020 року : У OpenTK вже деякий час з’являються нові технічні засоби, які мають активну спільноту розбратів. Тому попередня рекомендація щодо використання іншої бібліотеки не обов'язково відповідає дійсності.
Я думаю, що мав на увазі @korona, оскільки це лише API C, ви можете споживати його безпосередньо з C # з цілком великим набором тексту:
[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);
Вам, на жаль, потрібно було б зробити це для кожної функції OpenGL, яку ви телефонуєте, і це в основному те, що Tao зробив для вас.
Дао, як вважається, є приємною основою.
З їх сайту:
Рамка Дао для .NET - це сукупність прив’язок для полегшення розробки межплатформних медіа-додатків з використанням платформ .NET і Mono.
Ви можете OpenGL без обгортки та користуватися нею в C #. Як сказав Джефф Мак, вам доведеться імпортувати всі необхідні функції з DllImport.
Те, що він залишив, - це створити контекст, перш ніж ви можете використовувати будь-яку з функцій OpenGL. Це не важко, але є небагато інших не дуже інтуїтивних DllImports, які потрібно зробити.
Я створив приклад проекту C # у VS2012 з майже мінімальним мінімумом, необхідним для запуску OpenGL у вікні Windows. Він лише забарвлює вікно в блакитний колір, але його повинно вистачити для початку роботи. Приклад можна знайти на веб- сайті http://www.glinos-labs.org/?q=programming-opengl-csharp . Шукайте приклад No Wrapper внизу.
Я також рекомендував би рамку Дао . Але ще одна додаткова примітка:
Погляньте на ці підручники: http://www.taumuon.co.uk/jabuka/
Що б ви хотіли, щоб ці бібліотеки підтримки працювали? Просто використовувати OpenGL від C # досить просто і не потребує додаткових бібліотек afaik.
Щодо (дещо поза темою, яку я знаю, але оскільки вона була викладена раніше) вибір XNA vs OpenGL, у кількох випадках може бути корисним перейти з OpenGL замість XNA (і в інших XNA замість OpenGL ...).
Якщо ви збираєтеся запускати програми на Linux або Mac за допомогою Mono, можливо, це буде хорошим вибором, щоб перейти з OpenGL. Крім того, що не так широко відомо, я думаю, якщо у вас є клієнти, які збираються запускати ваші програми в середовищі Citrix, то DirectX / Direct3D / XNA не буде настільки економічним вибором, як OpenGL. Причиною цього є те, що програми OpenGL можуть бути розміщені спільно на меншій кількості серверів (через проблеми з продуктивністю, один сервер не може розміщувати нескінченну кількість прикладних програм), ніж програми DirectX / XNA, які вимагають роботи спеціалізованих віртуальних серверів для роботи в апаратному забезпеченні прискорений режим. Існують інші вимоги, такі як підтримувані відеокарти тощо, але я буду дотримуватися проблеми XNA vs OpenGL. Як ІТ-архітектор, розробник програмного забезпечення тощо, це доведеться враховувати перед вибором між OpenGL та DirectX / XNA ...
Побічна примітка полягає в тому, що WebGL базується на OpenGL ES3 afaik ...
Надалі, це не єдині міркування, але вони можуть полегшити вибір для деяких ...
XNA 2.0 вимагає мінімум картки шейдера 1.1. Незважаючи на те, що старі технології, не у кожного є. Деякі новіші ноутбуки (за нашим досвідом планшети Toshiba з графікою Intel) не підтримують шейдер 1.1. XNA просто не буде працювати на цих машинах.
Це важливе питання для нас, і ми перейшли до Тао та OpenGL. Крім того, з Tao ми маємо прив'язки для аудіо та підтримки Lua.