Любые привязки OCaml для GtkGlExt?Если нет, то как я могу их написать? - PullRequest
2 голосов
/ 14 февраля 2011

В настоящее время у меня есть две отдельные программы: (1) графический интерфейс GTK; (2) приложение Glut с 3D графикой openGL. Однако мне бы хотелось, чтобы часть openGL была встроена в графический интерфейс, который у меня есть.

Я заметил, GtkGlExt - это именно то, что мне нужно, но, к сожалению, привязки OCaml не упоминаются на его веб-страницах.

Мои вопросы:

(1) Знаете ли вы, есть ли такие привязки, потерянные где-то в киберпространстве? (Я нашел подобное обсуждение с 2008 года, так что я надеюсь, что через 3 года что-то случится.)

(2) Если нет никаких привязок, насколько сложно было бы создать эти привязки и с чего бы это было хорошее место для начала? Сколько из исходных библиотек C мне нужно понять? (До сих пор я не делал никаких вызовов C от OCaml.)

(3) В качестве альтернативы, вы знаете какой-нибудь другой готовый пакет, который я мог бы использовать? (Я попытался установить gtkglarea на OSX, но у меня были ошибки, которые я не мог решить и отказался. Я также пытался установить lablgtk2-2.14.0 + dfsg , но получил ошибки, описанные здесь .)

1 Ответ

2 голосов
/ 15 февраля 2011

Стандартным решением является использование поддержки OpenGL LablGTK. Я не знаю никаких привязок к другим решениям, таким как gtkglext. Если вы хотите написать свои собственные привязки, в общем, это не слишком сложно, нужно немного поработать и подумать. По крайней мере, вам нужно будет понять достаточно базовой библиотеки C, чтобы безопасно соединиться с OCaml, что сильно зависит от интерфейса библиотеки. Поскольку GtkGLExt основан на Glib, у вас будет благословение и проклятие того, что вы можете опираться на имеющийся в сообществе опыт связывания библиотек GLib / GTK и понимать, как работает Lablgtk2 для интеграции ваших привязок с ним , Это возможно, но не совсем тривиально, и я не помню, чтобы я видел хорошую документацию по привязке новых библиотек GTK, чтобы помочь вам начать работу.

Ваша ошибка в другом вопросе выглядит так, как будто вы пытаетесь скомпилировать вручную - пробовали ли вы собрать пакет GODI для lablgtk с включенным OpenGL? Он может иметь исправления и / или опции сборки, чтобы он работал. В качестве альтернативы, есть ли у MacPorts, которые вы используете по пути /opt/local, пакеты OCaml и lablgtk?

Другая опция : есть другая опция, которую я обычно использую, когда мне нужен доступ к объектам из несвязанной библиотеки. Вместо того, чтобы писать привязки для библиотеки, я напишу логику, нуждающуюся в этой библиотеке, в C и предоставлю минимальный интерфейс для моего кода OCaml. В случае GtkGLExt, вероятно, это всего лишь вопрос создания вызовов контекста инициализации, разрыва и запуска / остановки, которые выполняют основную работу с C API и возвращают контекст OpenGL или все, что необходимо. Вам все равно придется проделать определенную работу, чтобы выяснить, как получить правильный объект GTK из объекта OCaml и как передать обратно все, что необходимо для работы LablGL, но обычно это проще, чем создавать реальные привязки.

...