Вопрос

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top