2008-10-28 4 views
15

저는 현재 OpenGL을 사용하고 있으며 지금까지 모든 프로그램에 C를 사용하고 있습니다. 나는 파이썬을 OpenGL과 함께 Fedora에 설치했지만, 파이썬 코드에서 OpenGL 명령을 호출하면, 세그먼트 화 오류이 발생합니다. 나는 이것이 왜 있는지 전혀 모른다.OpenGl with Python

그냥 내가 파이썬을 사용하려는 이유는 여기에있다, 주석을 "단지 C를 사용하여"피하기 위해 :

가 나는 파이썬을 C로 전환하고자하고 몇 가지 이유가 있지만 주된 하나는 우리 때문에 raytracer 작성을 시작하려고합니다. 클래스를 사용하여 더 쉽게 사용할 수 있습니다. C++의 클래스와 C의 struct는 약간 미친 것처럼 보이기 때문에 파이썬에 시도해 볼 것이라고 생각했습니다. 나는 또한 잠시 동안 파이썬을 다시 사용할 이유를 찾고있었습니다.

도움 주셔서 감사합니다.

+0

http://pyopengl.sourceforge.net/ :) – plan9assembler

답변

16

또한 PyOpenGL 대신 Pyglet을 사용하는 것이 좋습니다. 이것은 로컬 플랫폼의 기본 OpenGL 라이브러리를 둘러싼 ctypes-wrapper이며, 윈도우 지원 (GLUT을 사용하고자하는 대부분의 것들을 처리해야 함)과 함께 사용됩니다. pyglet-users리스트는 꽤 적극적이고 매우 유용합니다.

1

어떤 OpenGL 라이브러리를 사용하고 있습니까? 어떤 윈도우 라이브러리? 파이썬의 어떤 버전입니까?

내가 생각할 수있는 가장 큰 이유는 윈도우 라이브러리 (SDL 또는 무엇을 사용하든)가 호출하기 전에 OpenGL을 초기화하지 않는다는 것입니다.

+1

Python 5.3.1, PyOpenGL 3.0.0-0.8, freeglut 2.4.0-14 – corymathews

+9

5.3.1을 사용하고 있습니까? 아니야. –

+0

2.5.1 lol sry way off – corymathews

0

무작위 분할 오류에 대한 아이디어가 없습니다. 정보가 충분하지 않습니다. OpenGL을 위해 사용하는 파이썬 라이브러리는 무엇입니까? 어떻게 사용합니까? 코드를 보여줄 수 있습니까? 그것은 아마 사소한 일이지만 내 신기한 일로 말미암아 끝내주는 말입니다.

Raytracer in python? 나는 그 구조체를 가지고 C에서 그렇게하는 것을 선호한다. 하지만 그렇다면 실시간 레이 트레이서를 사용하지 않을 것이라고 가정하고 있습니다.

0

활성 OpenGL 컨텍스트가 필요한 OpenGL 함수를 호출했을 가능성이 있습니까? 그게 반드시 추락해서는 안되지만, 아마도 그렇게 될 것 같네요. 그러한 컨텍스트를 설정하는 방법은 플랫폼에 따라 다르며, 파이썬에서 GL을 사용한 이후로 (그리고 내가했을 때, 문제를 복잡하게 만드는 GTK +도 사용했습니다.) 오래되었습니다.

2

글쎄, 이것이 원래 포스터가 사용하는 libs인지는 모르겠지만, PyOpenGL을 사용하여 (그래픽 엔진에서 C++과 Python을 사용하는) 애완 동물 프로젝트에서 동일한 문제를 보았습니다.

python 스크립트가로드 된 후에 PyOpenGL이 렌더링 컨텍스트를 올바르게 선택하지 못했습니다 (먼저 스크립트를로드하고 나서 내 C++ 코드에서 Python 메소드를 호출했습니다).

파이썬 스크립트를로드하기 전에 디스플레이를 초기화하고 OpenGL 렌더링 컨텍스트를 만드는 경우 문제가 나타나지 않습니다.

0

스크립트가 세그먼테이션 오류를 일으키지 않습니다. 하지만 처음에는 커널 및 kmod 비디오 드라이버 작업 속성이 ... 확장 모듈로 인해 "세그먼트 오류"가 발생할 수 있습니다.