2016-06-04 29 views
0

Ich versuche, mein Uni-Projekt zu tun, und ich verwende Pyglet für die Aufgabe. Dies ist Teil des Codes, der mich zu einem Problem macht.NameError beim Ausführen von Pyglet

from pyglet.gl import * 
from pyglet.window import key 
from pyglet.window import mouse 


window=pyglet.window.Window(resizable=True) 

@window.event 
def on_draw(): 

    glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE) 
    glutInitWindowSize (width, height) 
    glutInitWindowPosition (100, 100) 


    glClearColor(1.0, 1.0, 1.0, 1.0) 
    glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) 
    myObject() 
    glutSwapBuffers() 

Wenn ich für Funktionen gesucht glutInitDisplayMode, glutInitWindowSize und glutInitWindowPosition es zeigt nur PyOpenGL Fäden, so existieren sie für Pyglet oder im nur definieren sie falsch?

Terminal-Ausgang:

glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE)

NameError: global name 'glutInitDisplayMode' is not defined

und Gleiches gilt für andere zwei

Antwort

0

So glutInitDisplayMode ist eine Funktion, GL, aber soweit ich weiß, es ist nicht avilable von Pyglet gemacht, weil es nicht wirklich gebraucht wird.

Nun, das sind einige Spekulationen und korrigieren Sie mich, wenn ich falsch liege.
Aber die folgende Aufruf wird den Kontext für Sie eingerichtet:

pyglet.window.Window(...) 

Es für alle diese sind nicht notwendig:

glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE) 
glutInitWindowSize (width, height) 
glutInitWindowPosition (100, 100) 

Stattdessen, was Sie wollen, ist zu tun:

window = pyglet.window.Window(width=800, height=600) 
window.set_location(100, 100) 

Es gibt auch die Möglichkeit, eine spezifische Konfiguration und einen Kontext zu erstellen und zu injizieren:

config = pyglet.gl.Config(double_buffer=True) 
context = context = config.create_context(shared_context) 
window = pyglet.window.Window(config=config, context=context) 

Hoffe, dass dies alles für Sie klären.

+0

@smrkelj Ah, es hängt alles davon ab, wie Sie 'Config' importieren, es ist unter' pyglet.gl.Config' -> '' – Torxed

+0

Ich habe das getan Code: 'config = gl.Config (double_buffer = True) context = context = config.create_context (shared_context) Fenster = pyglet.window.Window (config = config, context = Kontext)' und dann bekam ich das Fehler: Leitung 29, in config = gl.Config (double_buffer = True) Attribute: 'Modul' Objekt hat kein Attribut 'Config' so habe ich es mit diesem: 'context = windo w.context config = context.config config.double_buffer Fenster = pyglet.window.Window (config = config, context = Kontext, Anzeige = Anzeige) ' werde ich etwas von diesem sdie oder dessen derselben verlieren? – smrkelj

+0

@smrkelj Normalerweise brauchst du überhaupt keinen 'Kontext', Pyglet macht diese Dinge für dich. Es ist mehr, wenn Sie die Option wünschen, einen Kontext selbst zu erstellen und ihn zwischen Windows usw. zu teilen. Siehe meine aktualisierte Antwort + meinen obigen Kommentar über 'gl.Config()'. – Torxed