Я также пытался использовать OpenTk, но сам по себе создает зависимость и - особенно как новичок - на самом деле ничего не делает, кроме как путает изучение OpenGL и изучение чужой интерпретации фреймворка.
OpenGL - это, как предположил другой ответчик, системная библиотека. При этом это функции, содержащиеся в C DLL, которые вы импортируете через API.
OpenTK импортирует эти функции для вас, это единственное реальное преимущество, которое он добавляет, но при этом многие типы переопределяются так же, как и вызовы функций согласно автору OpenTK.
Это создает дополнительную кривую обучения - поскольку большинство интернет-ссылок, которые вы собираетесь найти, будут OpenGL - так вы не только будете бороться с пониманием OpenGL - что не так просто - но вы также будет иметь дело с интерпретациями OpenTK стандартов OpenGL.
Теперь имейте в виду, что МНОГИЕ проекты с открытым исходным кодом, такие как OpenTK, начинают работать с открытым исходным кодом, пока не получат достаточную базу пользователей, когда перейдут на модель получения прибыли. Итак, предположим, что вы учитесь и становитесь зависимыми от OpenTK, хорошо, если / когда они переключаются на модель с целью получения прибыли, и вы нажали на наличные, вы - SOL (Черт, не повезло). Или вы должны заплатить их цену.
То, что я сделал, - я взял исходный код для сопоставления API для OpenGL-сопоставления и переименовал все в соответствии со своими вкусами. это немного работы, но это стоит труда, и это помогло мне понять OpenGL.
Что касается распределения. У меня нет абсолютно никаких внешних зависимостей, на которые я полагаюсь, кроме библиотеки OpenGL, которая уже должна быть в системе.
ВСЕ DLL, которые вам нужны для OpenGl, будут УЖЕ предустановлены на любую ОС Windows, с которой вы имеете дело. Я не могу говорить о других вариантах ОС, но я подозреваю, что это может быть дело.
И последнее замечание: OpenGL выполняет «переключение между программным и аппаратным рендерингом». Таким образом, библиотеки, такие как MESA и OpenTK, добавляют ОЧЕНЬ небольшую ценность при ВЫСОКИХ потенциальных затратах.
Каковы эти расходы?
1) Распространяемая упаковка и лицензирование. Они все еще идут с лицензией, и большинство лицензий могут быть изменены в любое время.
2) Преобразование из открытого или бесплатного источника в модель для получения прибыли.
Инвестируйте в себя. Документация OpenGL обширна и порой смущает, и я советую избегать соблазна коленного толчка «пойти по легкому» пути по сравнению с моделями других рычагов - по одной простой причине.
Я знаю, что вы используете это для двумерного приложения. И даже если вы используете Ортогональный вид, дело в том, что вы изучаете OpenGL с учетом паттерна 3d. Так что дайте себе подарок перед тем, как учить себя, потому что на самом деле нет «легкого пути» к пониманию 3d - и, следовательно, нет реальной ценности, добавляющей к внешним зависимостям, к которым вы склонны.
Одна вещь, которую нужно иметь в виду: моделирование. Если / когда вы переключаетесь на 3d моделирование, создание вершин с помощью ручного кодирования в opengl - это сука. Я использую Blender для создания своих obj-моделей и считываю их в свое собственное приложение на c #, которое читает в 3d-моделях и позволяет мне манипулировать ими оттуда.
Я использовал C ++, что, конечно, быстрее, но как только я преобразовал API в код c # и начал управлять своей собственной памятью, используя модель сборки мусора, это стало намного проще, чем изучение чужой библиотеки.
Не используйте распространяемые файлы. И использовать код из OpenTK, с изменениями, но не включать OpenTK как распространяемый.
Это мой совет.