import sys, math, time, string from OpenGL.GLUT import * from OpenGL.GL import * from OpenGL.GLU import * teapots = [] def draw(): glClear(GL_COLOR_BUFFER_BIT) for a in teapots: glPushMatrix() glTranslatef(a[0], a[1], 0) glColor3fv(a[2]) glutWireTeapot(10) glPopMatrix() glutSwapBuffers() def reshape(width, height): glViewport(0, 0, width, height) glMatrixMode(GL_PROJECTION) glLoadIdentity() gluOrtho2D(0, width, 0, height) glMatrixMode(GL_MODELVIEW) def keyboard(key,x,y): if key == chr(27): sys.exit(0) def mousebutton(button, state, x, y): print button, state if button == GLUT_LEFT_BUTTON and state == GLUT_DOWN: teapots.append([ x,glutGet(GLUT_WINDOW_HEIGHT)-y, [1,0,0] ]) elif button == GLUT_MIDDLE_BUTTON: teapots.append([ x,glutGet(GLUT_WINDOW_HEIGHT)-y, [0,1,0] ]) elif button == GLUT_RIGHT_BUTTON: teapots.append([ x,glutGet(GLUT_WINDOW_HEIGHT)-y, [0,0,1] ]) glutPostRedisplay() glutInit(sys.argv) glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB) glutInitWindowSize(400, 400) glutCreateWindow(sys.argv[0]) glutDisplayFunc(draw) glutKeyboardFunc(keyboard) glutMouseFunc(mousebutton) glutReshapeFunc(reshape) reshape(400,400) glutMainLoop()