import sys import time from OpenGL.GLUT import * from OpenGL.GL import * from OpenGL.GLU import * color = [1, 0, 0] geometryType = GL_LINE_LOOP def draw(): glClear(GL_COLOR_BUFFER_BIT) glLoadIdentity() glColor3fv(color) glBegin(geometryType) glVertex2f(-0.5, -0.5) glVertex2f(0.5, -0.5) glVertex2f(0.5, 0.5) glVertex2f(-0.5, 0.5) glEnd() glutSwapBuffers() def keyboard(key, x, y): if key == chr(27): sys.exit(0) def colorMenuFn(val): global color if val == 1: color = [1,0,0] elif val == 2: color = [0,1,0] elif val == 3: color = [0,0,1] glutPostRedisplay() def geometryMenuFn(val): global geometryType geometryType = val glutPostRedisplay() def mainMenuFn(val): if val == 1: sys.exit(0) def exitMenuFn(val): if val == 1: sys.exit(0) glutInit([]) glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB) glutInitWindowSize(400, 400) glutInitWindowPosition(0,0) glutCreateWindow(sys.argv[0]) glutDisplayFunc(draw) glutKeyboardFunc(keyboard) colormenu = glutCreateMenu(colorMenuFn) glutAddMenuEntry("Red", 1) glutAddMenuEntry("Green", 2) glutAddMenuEntry("Blue", 3) geometrymenu = glutCreateMenu(geometryMenuFn) glutAddMenuEntry("Points", GL_POINTS) glutAddMenuEntry("Lines", GL_LINES) glutAddMenuEntry("Line loop", GL_LINE_LOOP) glutAddMenuEntry("Quads", GL_QUADS) glutCreateMenu(mainMenuFn) glutAddSubMenu("geometry", geometrymenu) glutAddSubMenu("color", colormenu) glutAddMenuEntry("quit", 1) glutAttachMenu(GLUT_LEFT_BUTTON) glutCreateMenu(exitMenuFn) glutAddMenuEntry("exit", 1) glutAttachMenu(GLUT_RIGHT_BUTTON) glutMainLoop()