2010-06-03 9 views
9

Voglio iniziare ad imparare OpenGL ma non voglio davvero imparare un'altra lingua per farlo. Sono già abbastanza esperto in python e mi piace la lingua. Voglio solo sapere quanto è vicino alla normale API? Sarò in grado di seguire facilmente tutorial e libri senza troppi problemi?PyOpenGL è un buon punto di partenza per l'apprendimento della programmazione opengl?

So che il C++ offre prestazioni migliori, ma per il solo apprendimento posso sbagliare con PyOpenGL?

risposta

12

Con l'avvertenza che ho fatto pochissima programmazione OpenGL, credo che per gli scopi dell'apprendimento, PyOpenGL sia una buona scelta. Il motivo principale è che PyOpenGL, come la maggior parte degli altri wrapper OpenGL, è proprio questo: un involucro sottile attorno all'API OpenGL.

Un grande vantaggio di PyOpenGL è che mentre in C devi preoccuparti di chiamare il comando corretto glVertex3{dfiX}, Python ti permette semplicemente di scrivere glVertex3(x,y,z) senza preoccuparti di dire a Python quale tipo di argomento hai passato. Potrebbe non sembrare un grosso problema, ma è spesso molto più semplice usare la digitazione anatra di Python invece di essere eccessivamente preoccupato della tipizzazione statica.

I metodi OpenGL sono quasi completamente racchiusi in metodi Python, quindi mentre scriverai in Python, gli algoritmi e le chiamate di metodo che utilizzerai sono identiche a scrivere OpenGL in qualsiasi altra lingua. Ma dal momento che stai scrivendo in Python, avrai molte meno opportunità di commettere errori "stupidi" con l'uso corretto del puntatore, la gestione della memoria, ecc. Che rischierebbero di perdere tempo se studi l'API in C o C++ , per esempio.

+1

Lo stesso si può dire per JOGL per i fan di Java. – Ricket

-1

PyOpenGL

Non credo che sia una buona scelta. Nella mia opinione in C/C++ è più facile giocare con il codice OpenGL - iniziare con una semplice app, quindi aggiungere shader, quindi aggiungere alcune funzioni di geometria, creare un generatore di texture/geometria, creare scene tramite CSG, ecc. Sai - divertirti, giocare con il codice, sperimentare e imparare qualcosa in corso. Onestamente, semplicemente non mi vedo a farlo in Python. Sicuramente è possibile fare la programmazione OpenGL in Python, ma non vedo alcuna ragione per farlo davvero. Oltre a numerose funzioni OpenGL prendono puntatori di memoria come argomenti, e anche se c'è probabilmente una classe (o decine di alternative) per quel caso, non vedo una ragione per usarli quando un modo tradizionale di fare le cose è disponibile in C/C++, specialmente quando penso alla quantità di wrapper che il codice python usa per passare vettore o array di quelli nella funzione OpenGL. Sembra proprio come rendere le cose più complicate senza una vera ragione per farlo. Inoltre, vi è un notevole calo delle prestazioni, soprattutto quando si utilizza OpenGL "RAW".

Inoltre, se avete intenzione di fare i giochi, è molto probabile che dovrete usare C++ o qualche altro linguaggio "non-python".

P.S. Ho fatto abbastanza programmazione OpenGL, molta programmazione DirectX, ma sono specializzato in C++ e uso python solo per determinati test, strumenti e script algoritmici.

+3

Ehi. Ti ho segnato perché secondo me questo non è un buon consiglio. Ho pensato di lasciare un commento spiegando perché invece di farlo in modo anonimo e senza lasciare feedback. Dici che pensi sia più facile in C++, ma non dire perché. Il codice Python è più breve e più semplice, richiede meno parametri e meno pensieri. –

+0

... Ho trascorso 7 anni a scrivere C e C++, ma l'equivalente di Python sarebbe proprio la stessa della versione C/C++, ma un po 'più facili da creare, perché, come dice Mark Rushakoff, non ci sono puntatore o di gestione della memoria problemi a avere a che fare con. PyOpenGL andrà a capo automaticamente tutte le funzioni OpenGL chiama con il parametro di verifica e controllo degli errori di default, rendendo la diagnosi più facile.Usando PyOpenGL puoi passare un array di vertici come una normale lista Python - non ci sono wrapper. Vi sono implicazioni sul rendimento, ma non problemi di complessità. –

+1

Inoltre, conosco molte persone che creano giochi usando Python. La tua ipotesi che ciò richieda C/C++ si basa sul presupposto che OpenGL è male in Python, che si basa sul presupposto che l'uso di giochi richiede C/C++ ... :-) –

Problemi correlati