OpenGl с Python - PullRequest
       56

OpenGl с Python

15 голосов
/ 28 октября 2008

В настоящее время я учусь на курсе, использующем OpenGL, и до сих пор использую C для всех программ. Я установил Python на Fedora так же, как и на OpenGL, однако в ту минуту, когда я вызываю команду OpenGL в своем коде Python, я получаю ошибку сегментации . Я понятия не имею, почему это так.

Просто чтобы избежать комментариев "просто используйте C", вот почему я хочу использовать Python:

Есть пара причин, по которым я хочу перейти с C на Python, но главная из них в том, что мы собираемся начать писать raytracer, и я хотел бы использовать классы, чтобы мне было проще. Так как я ненавижу классы в C ++ и структуры в C, кажется немного сумасшедшим, я решил попробовать Python. Я также искал причину использовать Python снова, как это было давно.

Спасибо за любую помощь.

Ответы [ 6 ]

16 голосов
/ 29 октября 2008

Вы также можете рассмотреть возможность использования Pyglet вместо PyOpenGL. Это оболочка ctypes вокруг собственных библиотек OpenGL на локальной платформе, а также поддержка окон (должна обрабатывать большую часть того, для чего вы хотите использовать GLUT.) Список pyglet-users довольно активен и полезно.

2 голосов
/ 22 ноября 2009

Ну, я не знаю, используют ли эти библиотеки оригинальный плакат, но я видел идентичные проблемы в проекте с домашним животным, над которым я работаю (Graphics Engine с использованием C ++ и Python) с использованием PyOpenGL.

PyOpenGL неправильно выбрал контекст рендеринга, если он был создан после загрузки скрипта python (сначала я загружал скрипт, затем вызывал в нем методы Python из своего кода C ++).

Проблема не появляется, если вы инициализируете отображение и создаете контекст рендеринга OpenGL перед загрузкой скрипта Python.

1 голос
/ 28 октября 2008

Какую библиотеку OpenGL вы используете? Какая библиотека окон? Какая версия Python?

Наиболее вероятная причина, по которой я могу думать, заключается в том, что ваша оконная библиотека (SDL или что вы используете) не инициализирует OpenGL, прежде чем вы начнете вызывать ее.

0 голосов
/ 18 февраля 2010

Скрипты никогда не вызывают ошибки сегментации. Но сначала посмотрите, работает ли ваше ядро ​​и драйвер видеокарты kmod ... Модули расширения могут вызвать «ошибку сегментации».

0 голосов
/ 29 октября 2008

Возможно, вы вызываете функцию OpenGL, которая требует активного контекста OpenGL, но не имеет его? Это не обязательно приведет к краху, но я думаю, что может. Как настроить такой контекст, зависит от платформы, и прошло уже много времени с тех пор, как я использовал GL из Python (и когда я это сделал, я также использовал GTK +, что усложняет ситуацию).

0 голосов
/ 28 октября 2008

Мы не имеем ни малейшего представления о случайных ошибках сегментации. Недостаточно информации. Какие библиотеки Python вы используете для OpenGL? Как вы их используете? Можете ли вы показать нам свой код? Это, наверное, что-то тривиальное, но мой бог-умение в конечном итоге говорит мне только и только это.

Raytracer в питоне? Я бы предпочел просто делать это в Си с этими структурами. Но тогда, я предполагаю, что вы не собираетесь делать трассировку в реальном времени, так что это может быть хорошо.

...