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.
Модули расширения могут вызывать "ошибку сегментации".