зависимости opengl - PullRequest
       11

зависимости opengl

0 голосов
/ 05 декабря 2009

Я новичок в opengl и использую C #, opentk для разработки. Мое приложение очень легкое (всего 2d графика), и я планирую использовать программный рендеринг, когда аппаратный рендеринг недоступен.

  • Как мне убедиться, что программный рендеринг работает на всех компьютерах? (когда аппаратный рендеринг недоступен.)
  • Должен ли я распространять библиотеки программного рендеринга, такие как Mesa , сам. или он будет уже доступен на всех (Windows) ОС?
  • Другими словами, opengl32.dll всегда доступен во всех современных ОС Windows (> XP SP2), или я должен распространять это также?

(На данный момент мое приложение очень простое (простая 2-мерная графика). Я выбрал opengl вместо GDI + / WPF, потому что в будущем я могу расширить его до 3D.)

Ответы [ 2 ]

2 голосов
/ 05 декабря 2009

OpenGL - системная библиотека. Вы не должны распространять его вместе со своим заявлением. Особенно в системах Unix / Linux, где он должен быть установлен с помощью менеджера пакетов дистрибутива.

Поскольку файл opengl32.dll входит в состав Windows, он автоматически возвращается к программному рендерингу, если выбранный в приложении формат пикселя не ускоряется аппаратно с помощью графического драйвера.

0 голосов
/ 23 июня 2015

Я также пытался использовать 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 как распространяемый.

Это мой совет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...