문제

나는 현재 OpenGL을 사용하는 과정에 있으며 지금까지 모든 프로그램에 C를 사용하고 있습니다. Fedora와 OpenGL에 Python을 설치했지만 Python 코드에서 OpenGL 명령을 호출하는 순간에 세그멘테이션 오류. 나는 이것이 왜 그런지 전혀 모른다.

"C 사용"주석을 피하기 위해 여기에 Python을 사용하려는 이유가 있습니다.

내가 C에서 Python으로 전환하고 싶은 몇 가지 이유가 있지만, 주된 것은 우리가 Raytracer를 쓰기 시작하고 수업을 사용하여 더 쉽게 만들 수 있기를 원하기 때문입니다. 나는 C ++의 수업을 싫어하고 C의 structs가 약간 미쳤어 보이기 때문에 Python에게 시도해 볼 것이라고 생각했습니다. 나는 또한 Python이 오랜 시간이 지났을 때 다시 사용할 이유를 찾고있었습니다.

도움을 주셔서 감사합니다.

도움이 되었습니까?

해결책

사용을 고려할 수도 있습니다 피그렛 pyopengl 대신. 그것은 로컬 플랫폼의 기본 Opengl Libs 주변의 ctypes-wrapper와 함께 윈도우 지원 (glut를 위해 사용하려는 대부분의 물건을 처리해야합니다.) 피그렛 사용자 목록은 매우 활발하고 매우 유용합니다.

다른 팁

글쎄, 나는 이것들이 원래 포스터가 사용하는 Libs인지는 모르겠지만 Pyopengl을 사용하는 PET 프로젝트 (C ++ 및 Python을 사용하는 그래픽 엔진)에서 동일한 문제를 보았습니다.

Pyopengl은 Python 스크립트가로드 된 후 생성 된 경우 렌더링 컨텍스트를 올바르게 선택하지 않았습니다 (스크립트를 먼저로드 한 다음 C ++ 코드에서 Python 메서드를 호출했습니다).

Python 스크립트를로드하기 전에 디스플레이를 초기화하고 OpenGL 렌더링 컨텍스트를 작성하면 문제가 나타나지 않습니다.

어떤 OpenGL 라이브러리를 사용하고 있습니까? 어떤 창문 도서관? 어떤 버전의 파이썬?

내가 생각할 수있는 대부분의 원인은 창문에 전화를 시작하기 전에 윈도우 라이브러리 (SDL 또는 사용중인 것)가 OpenGL을 초기화하지 않기 때문입니다.

무작위 분할 결함에 대한 아이디어가 없습니다. 정보가 충분하지 않습니다. OpenGL에 어떤 파이썬 라이브러리를 사용하고 있습니까? 어떻게 사용합니까? 코드를 보여줄 수 있습니까? 아마도 사소한 일이지만 내 신 -skill은 나에게 그분 만 말해줍니다.

파이썬의 레이 트레이서? 나는 그 구조와 함께 C에서 그 일을 선호합니다. 그러나 나는 당신이 실시간 Raytracer를하지 않을 것이라고 가정하고 있습니다. 그래서 괜찮을 수도 있습니다.

아마도 당신은 OpenGL 함수를 호출하지 않고 활성 OpenGL 컨텍스트를 요구하고 있습니까? 반드시 충돌은 아니지만, 그렇지 않을 것 같습니다. 이러한 컨텍스트를 설정하는 방법은 플랫폼에 따라 다르며 Python에서 GL을 사용한 지 오래되었습니다 (그리고 내가 할 때 문제를 복잡하게하는 GTK+를 사용했습니다).

스크립트는 세분화 결함을 유발하지 않습니다. 그러나 먼저 커널 및 KMOD 비디오 드라이버 작업 속성 ... 확장 모듈이 "분할 오류"를 유발할 수 있는지 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top