and - OpenGl con Python
python and opengl (6)
Actualmente estoy en un curso que usa OpenGL y he estado usando C para todos los programas hasta ahora. Tengo Python instalado en Fedora y en OpenGL, sin embargo, en el momento en que llamo a un comando OpenGL en mi código de Python, aparece un error de segmentación . No tengo idea de por qué es esto.
Solo para evitar los comentarios "solo use C", esta es la razón por la que quiero usar Python:
Hay un par de razones por las que quiero cambiar de C a Python, pero la principal es porque estamos a punto de comenzar a escribir un raytracer y me gustaría utilizar las clases para que sea más fácil para mí. Como odio las clases en C ++ y las estructuras en C parecen un poco locas, pensé que podría probar con Python. También he estado buscando una razón para usar Python nuevamente, ya que ha sido un tiempo.
Gracias por cualquier ayuda.
¿Qué biblioteca OpenGL estás usando? ¿Qué biblioteca de ventanas? ¿Qué versión de Python?
La causa más probable que se me ocurre es que su biblioteca de ventanas (SDL o lo que sea que esté usando) no está inicializando OpenGL antes de comenzar a llamar.
No tenemos ideas sobre fallas de segmentación aleatorias. No hay suficiente información ¿Qué bibliotecas de python estás usando para opengl? ¿Cómo los usas? ¿Puedes mostrarnos tu código? Probablemente sea algo trivial, pero mi habilidad divina acaba diciéndome justamente y solo eso.
Raytracer en python? Prefiero hacer eso en C con esas estructuras. Pero entonces, supongo que no vas a hacer un raytracer en tiempo real para que esté bien.
¿Tal vez está llamando a una función OpenGL que requiere un contexto OpenGL activo, sin tener una? Eso no debería necesariamente colapsar, pero creo que sí. Cómo configurar ese contexto depende de la plataforma, y ha pasado un tiempo desde que utilicé GL desde Python (y cuando lo hice, también utilicé GTK +, lo que complica las cosas).
También puede considerar usar Pyglet en lugar de PyOpenGL. Se trata de un contenedor de tipos alrededor de las librerías OpenGL nativas en la plataforma local, junto con soporte de ventanas (debería manejar la mayoría de las cosas para las que quiere usar GLUT). La lista de usuarios de pyglet es bastante activa y muy útil.
Bueno, no sé si estas son las librerías que están usando los carteles originales, pero vi problemas idénticos en un proyecto mascota en el que estoy trabajando (Graphics Engine usando C ++ y Python) usando PyOpenGL.
PyOpenGL no recogió correctamente el contexto de representación si se creó después de que se había cargado la secuencia de comandos de python (primero estaba cargando la secuencia de comandos y luego llamando a los métodos de Python desde mi código de C ++).
El problema no aparece si inicializa la pantalla y crea el contexto de representación de OpenGL antes de cargar la secuencia de comandos de Python.
Los scripts nunca causan fallas de segmentación. Pero primero vea si su kernel y la propiedad de trabajo del controlador de video kmod ... Los módulos de extensión pueden causar "falla de segmentación".