Domanda

Attualmente sto seguendo un corso che utilizza OpenGL e finora ho usato C per tutti i programmi. Ho installato Python su Fedora e OpenGL, tuttavia nel momento in cui chiamo un comando OpenGL nel mio codice Python, ricevo un errore di segmentazione . Non ho idea del perché.

Solo per evitare il " basta usare C " commenti, ecco perché voglio usare Python:

Ci sono un paio di motivi per cui voglio passare da C a Python, ma il principale è perché stiamo per iniziare a scrivere un raytracer e vorrei usare le classi per semplificarmi. Dal momento che odio le classi in C ++ e le strutture in C sembrano un po 'pazze, ho pensato di provare Python. Ho anche cercato un motivo per usare di nuovo Python dato che è passato un po 'di tempo.

Grazie per l'aiuto.

È stato utile?

Soluzione

Puoi anche prendere in considerazione l'utilizzo di Pyglet invece di PyOpenGL. È un wrapper ctypes attorno alle librerie OpenGL native sulla piattaforma locale, insieme al supporto per finestre (dovrebbe gestire la maggior parte delle cose per cui vuoi usare GLUT.) Il pyglet-users è piuttosto attivo e molto utile.

Altri suggerimenti

Beh, non so se queste sono le librerie che il poster originale sta usando, ma ho visto problemi identici in un progetto per animali domestici a cui sto lavorando (motore grafico usando C ++ e Python) usando PyOpenGL.

PyOpenGL non ha correttamente raccolto il contesto di rendering se è stato creato dopo che lo script python è stato caricato (prima stavo caricando lo script, quindi chiamando i metodi Python dal mio codice C ++).

Il problema non si presenta se si inizializza il display e si crea il contesto di rendering OpenGL prima di caricare lo script Python.

Quale libreria OpenGL stai usando? Quale libreria di finestre? Quale versione di Python?

La causa più probabile che mi viene in mente è che la tua libreria di finestre (SDL o qualunque cosa tu stia usando) non sta inizializzando OpenGL prima di iniziare a chiamarci.

Non abbiamo idee su errori di segmentazione casuali. Non ci sono abbastanza informazioni Quali librerie di Python stai usando per Opengl? Come li usi? Puoi mostrarci il tuo codice? Probabilmente è qualcosa di banale ma il mio dio-abilità finisce per dirmi solo e solo quello.

Raytracer in Python? Preferirei farlo in C con quelle strutture. Ma poi, presumo che non farai un raytracer in tempo reale, quindi potrebbe essere ok.

Forse stai chiamando una funzione OpenGL che richiede un contesto OpenGL attivo, senza averne uno? Questo non dovrebbe necessariamente andare in crash, ma credo che potrebbe. Come impostare un tale contesto dipende dalla piattaforma, ed è passato un po 'di tempo da quando ho usato GL di Python (e quando l'ho fatto, ho anche usato GTK + che complica le cose).

Gli script non causano mai errori di segmentazione. Ma prima vedi se la proprietà funzionante del tuo driver video e kernelod ... I moduli di estensione possono causare "errore di segmentazione".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top