ich OpenGL durch Pygame mit Sachen zu machen, und ich will OpenGL Maus Informationen erhalten. Ich weiß, dass ich Mausposition & klicken kann, klicken Sie direkt über Pygame, aber ich brauche Mausposition in OpenGL-Koordinaten, nicht nur Pixelkoordinaten des Ansichtsfensters. Das Problem ist, dass ich die Openback-Mausrückrufe nicht auslösen kann. Betrachten Sie den folgenden Code ein:Problem mit OpenGL Maus Rückrufe in Pygame
import pygame
from pygame.locals import DOUBLEBUF, OPENGL
from OpenGL.GLUT import glutMouseFunc, glutInit
def mouse_handler(button, state, x, y):
print("mouse handler: ",button, state, x, y)
pygame.init()
display = (800,600)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
glutInit()
glutMouseFunc(mouse_handler)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
pygame_mouse_pos = pygame.mouse.get_pos()
print(pygame_mouse_pos)
Wenn Sie diesen Code ausführen wird es einen kontinuierlichen Ausdruck der Mausposition nach Pygame, beginnen, die von der Linie pygame_mouse_pos = pygame.mouse.get_pos()
erhalten wird. Aber ich kann den OpenGL-Maus-Callback, der mit glutMouseFunc(mouse_handler)
eingerichtet wurde, nicht auslösen. Kann mir jemand sagen, was ich falsch mache? Dieser Code läuft sowohl in Python 2 als auch in 3 und ich bekomme in jedem die gleichen Ergebnisse.
Was ist der Unterschied zwischen OpenGL und GLUT? Ich habe einfach angenommen, dass GLUT eine Komponente von OpenGL ist. –
@ J-bob, GLUT ist das "OpenGL Utility-Toolkit", das Eingaben verarbeitet, Fenster erstellt und den OpenGL-Kontext erstellt. Es geht also eher darum, mit dem Betriebssystem zu sprechen. Es hat auch einige übergeordnete Zeichenmethoden. OpenGL ist eine API, um mit der GPU oder besser mit ihrem Treiber zu kommunizieren, also geht es darum, Dreiecke zu verschieben, Shader zu erstellen usw. – karyon