Seite 1 von 1

PyOpenGL - wie sollte man es lernen?

Verfasst: Sonntag 30. Mai 2010, 20:41
von Barcellona
Hallo zusammen,

ich würde gerne OpenGL lernen und wollte das Ganze jetzt über Python angehen.

Habe mir PyOpenGL installiert, wie auf der PyOpenGL-Seite erklärt, und wollte nun ein paar
Beispiele suchen, um es mal zu testen.

Habe dies hier gefunden:

Code: Alles auswählen

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
  
glutInit("Hello, World")
  
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB |GLUT_DEPTH)
 
glutInitWindowSize(400,400)
  
glutCreateWindow("Hello, World")
  
glClearColor(0.,0.,0.,1.)
  
glutSetDisplayFuncCallback(display)
glutDisplayFunc()
glutMainLoop()
Bekomme aber den Fehler, das "glutSetDisplayFuncCallback(display)" nicht definiert ist.
"NameError: 'glutSetDisplayFuncCallback(display)' is not defined

Jetzt dachte ich zunächst, dass ich PyOpenGL nicht richtig installiert hätte, aber es kam keine
Fehlermeldung und scheint auf neuester Version zu sein.

Kann es sein, dass der Code bereits veraltet ist? Und deswegen nicht läuft?

Wie würdet ihr mir den empfehlen PyOpenGL zu lernen?
Anhand von Beispielen? (weiß jemand woher?) Buch?

Danke für alle Antworten! :)

Re: PyOpenGL - wie sollte man es lernen?

Verfasst: Sonntag 30. Mai 2010, 22:17
von EyDu
Hallo.

Mit einem Blick in die Dokumentation findet man das hier:

Code: Alles auswählen

try:
    glutSetDisplayFuncCallback(self.OnRedisplay)
    glutDisplayFunc()
except NameError:
    glutDisplayFunc(self.OnRedisplay)

Re: PyOpenGL - wie sollte man es lernen?

Verfasst: Montag 31. Mai 2010, 15:29
von veers
Zum lernen, kauf dir ein Buch, oder gleich mehrere.

Das Redbook ist mehr oder weniger eine pflicht Lektüre, auch wenn es etwas mehr auf OpenGL 3 eingehen könnte. Die Super Bible wird auch relativ oft empfohlen. Hat mir aber weniger zugesagt. Für eine Moderne OpenGL Anwendung brauchst du Shader, also noch diese Buch. Für allgemeine Informationen bezüglich Realtime Rendering kann ich dir das gleichnamige Buch nahe legen.

Gruss,
Jonas

Re: PyOpenGL - wie sollte man es lernen?

Verfasst: Dienstag 1. Juni 2010, 08:49
von Barcellona
EyDu hat geschrieben:Hallo.

Mit einem Blick in die Dokumentation findet man das hier:

Code: Alles auswählen

try:
    glutSetDisplayFuncCallback(self.OnRedisplay)
    glutDisplayFunc()
except NameError:
    glutDisplayFunc(self.OnRedisplay)
Danke, hat jetzt geklappt. :)
Ist der Befehl "glutSetDisplayFuncCallback()" veraltet?
Oder warum kommt es zu einem NameError?
Wo hast du das oben denn nachgeschlagen? In der Glut-API? Seh' das da gar nicht... :?

Re: PyOpenGL - wie sollte man es lernen?

Verfasst: Dienstag 1. Juni 2010, 08:59
von Barcellona
veers hat geschrieben:Zum lernen, kauf dir ein Buch, oder gleich mehrere.

Das Redbook ist mehr oder weniger eine pflicht Lektüre, auch wenn es etwas mehr auf OpenGL 3 eingehen könnte. Die Super Bible wird auch relativ oft empfohlen. Hat mir aber weniger zugesagt. Für eine Moderne OpenGL Anwendung brauchst du Shader, also noch diese Buch. Für allgemeine Informationen bezüglich Realtime Rendering kann ich dir das gleichnamige Buch nahe legen.

Gruss,
Jonas
Danke Jonas, habe mir dieses Buch hier schon besorgt http://www.amazon.de/Beginning-Opengl-G ... 21&sr=8-14.
Habe mir die neueste OpenGL in Python installiert, arbeite mich aber zurzeit größtenteils durch Beispiel-Code, wie zB von der NeHe-Seite. Der Code ist oft schon älter und in OpenGl hat sich ja soweit ich weiß kürzlich recht viel geändert.
Ist OpenGL denn komplett abwärtskompatibel? Also nur alter Stil, wenn man älteren Code verwendet? Oder laufen die veralteten Befehle unter OpenGl 3.0 teils gar nicht mehr?

Re: PyOpenGL - wie sollte man es lernen?

Verfasst: Dienstag 1. Juni 2010, 10:18
von veers
Zum frust vieler OpenGL Programmierer, ja. Ich würde trotzdem versuchen die Fixed Pipeline zu vermeiden.

Im allgemeinen empfehle ich dir Pyglet an stelle von PyOpenGL zu verwenden. Wenn du dann noch mit ctypes halbwegs klar kommst dürftest du kein Problem haben den Beispielen zu folgen.

Gruss,
Jonas

Re: PyOpenGL - wie sollte man es lernen?

Verfasst: Donnerstag 3. Juni 2010, 12:21
von Barcellona
veers hat geschrieben:Zum frust vieler OpenGL Programmierer, ja. Ich würde trotzdem versuchen die Fixed Pipeline zu vermeiden.
Also in dem Buch mit dem ich lerne wird auch nur kurz auf Immediate Mode und Vertex Arrays eingegangen, weil diese wohl als 'deprectaed' markiert sind, und dann wird anscheinend alles nur noch mit Vertex Buffer Objects gemacht.
Immediate Mode und Vertex Arrays hab' ich allerdings gut verstanden und mein Code klappt damit auch, würde es noch Sinn machen erstmal nur damit zu lernen? Oder fliegen die beiden Methoden demnächst komplett aus OpenGL und sind nicht mehr nutzbar?
Weiß man da schon näheres?

Re: PyOpenGL - wie sollte man es lernen?

Verfasst: Donnerstag 3. Juni 2010, 13:50
von veers
GL_ARB_compatibility wird von Nvidia und afaik auch ATI unterstützt. Damit kannst du Immediate Mode & co auch später noch verwenden. Ich würde dir aber trotzdem VBOs empfehlen. Gerade wenn du mit Python arbeitest kannst du die Performance Vorteile gut brauchen.

Re: PyOpenGL - wie sollte man es lernen?

Verfasst: Freitag 4. Juni 2010, 13:56
von Barcellona
Hmm, das Problem ist, dass ich am besten mit gutem (gut kommentierten) Beispiel-Code lerne.
Die NeHe-Seite ist dafür zum Beispiel echt super.
Jedoch ist der Großteil des Codes wohl schon etwas älter und erklärt somit sehr gut die Funktionen, die als
deprecated markiert sind.
Aktuellen Beispiel-Code in Python habe ich bisher kaum gefunden... (also mit VBOs und Shaders) :|