Добавить библиотеки OpenGL в программный пакет - PullRequest
5 голосов
/ 23 сентября 2011

Я разработал пакет научных кодов (для столкновительного / гравитационного моделирования N-тела). Это не требует никаких библиотек для запуска. Люди могут скачать его и просто набрать make, чтобы скомпилировать его. Я хочу, чтобы все было так просто.

Я добавил OpenGL в качестве опции для визуализации симуляции в реальном времени. Это выглядит действительно здорово. Тем не менее, некоторые люди не имеют библиотеки OpenGL / GLUT, установленной на их компьютере.

Какой самый простой способ разрешить этим пользователям использовать мой код без необходимости устанавливать внешние библиотеки вручную. У меня такое ощущение, что если я напишу предложение типа «Пожалуйста, установите OpenGL / GLUT». в руководстве это оттолкнет многих людей. Могу ли я просто добавить freeglut в мой пакет с исходным кодом? Это хорошая идея, или у вас есть другие предложения?

Ответы [ 2 ]

2 голосов
/ 23 сентября 2011

OpenGL на самом деле не библиотека, несмотря на название. Я предлагаю читать L OpenGL как "Слой". OpenGL входит в состав драйверов графических процессоров. В этом случае динамическая библиотека, установленная в системе, предоставляет API для драйверов, но не имеет внутренних функций. Поэтому нет смысла отправлять OpenGL-библиотеку вместе с вашей программой.

Вы просто делаете это зависимым от opengl32.dll / libGL.so / OpenGLFramework. Если использование OpenGL является необязательным, есть возможность динамически загружать библиотеку доступа к API, но это довольно запутанно.

1 голос
/ 24 сентября 2011

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

Windows включает в себя реализацию OpenGL "из коробки" начиная с Windows 95. Я считаю, что это откат программного обеспечения (хотя более новыми могут быть обертки DirectX), и это довольно старая версия OpenGL (1.1), так как она предшествует их собственной попытке доминировать Маркет через Direct3D. Конечно, большинство новых функций не будут хорошо работать в программном обеспечении, так как это такие вещи, как шейдеры, которые требуют специализированного оборудования. Это будет зависеть от того, насколько интенсивна ваша программа.

Mac OS имеет официальную поддержку или OpenGL начиная с OS9 (различные версии OpenGL в зависимости от версии ОС), OSX 10.7 имеет OpenGL 3.2, но, похоже, 1.1-> 2.1, вероятно, зависит от того, какая версия оборудования / OSX).

Большинство современных настольных реализаций Linux будут иметь некоторую поддержку OpenGL, возможно, через проприетарные официальные драйверы ATI / nVidia / Intel. Есть также некоторые драйверы с открытым исходным кодом, такие как Nouveau. К сожалению, есть также много платформ с испорченными реализациями, нет свободно распространяемых реализаций (некоторые дистрибутивы / конечные пользователи отказываются использовать закрытые компоненты) или нет ускорения. Например, чипсет Intel GMA500 в настоящее время довольно сломан.

Если вы все еще хотите включить запасной вариант, попробуйте посмотреть на Mesa . Это кроссплатформенное программное обеспечение с открытым исходным кодом, обеспечивающее реализацию OpenGL Вполне возможно, что вы могли бы включить это. Он поддерживает OpenGL версии 2.1 и работает на 3.0+ с некоторыми доступными расширениями. Такие вещи, как шейдеры, будут медленными (есть проект под названием LLVMpipe, который может предложить улучшения, но он довольно практичен, и он только сможет сделать так много).

Существует также проект ANGLE , который представляет собой оболочку OpenGL ES 2.0 DirectX 9.0. Я полагаю, что это от Google с намерением поддержать Chrome / Chromium WebGL на Windows. Но теперь, конечно, OpenGL ES - это полная версия OpenGL, которая поможет вам только с Windows.

Скорее всего, ваш лучший вариант - просто отключить опцию симуляции OpenGL, если у них не установлены библиотеки.

...