OpenGl с Python

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

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

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

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

Ответы

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

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