import sys from OpenGL.GLUT import * from OpenGL.GL import * from OpenGL.GLU import * flatShade = 0 def draw(): glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(60, 1, 0.1, 1000) glMatrixMode(GL_MODELVIEW) glLoadIdentity() glTranslatef(0, 0, -10) global flatShade if flatShade: glShadeModel(GL_FLAT) else: glShadeModel(GL_SMOOTH) drawTriangle() # drawTriangleStrip() glutSwapBuffers() def drawTriangle(): glBegin(GL_TRIANGLES) glColor3f(1, 0, 0) glVertex3f(-1, -1, 4) glColor3f(0, 1, 0) glVertex3f(1, -1, 4) glColor3f(0, 0, 1) glVertex3f(0, 1, 4) glEnd() def drawTriangleStrip(): glBegin(GL_TRIANGLE_STRIP) glColor3f(1, 0, 0) glVertex3f(-3, -1, 4) glColor3f(0, 1, 0) glVertex3f(-2, 1, 4) glColor3f(0, 0, 1) glVertex3f(-1, -1, 4) glColor3f(1, 1, 0) glVertex3f(0, 1, 4) glColor3f(1, 0, 1) glVertex3f(1, -1, 4) glColor3f(0, 1, 1) glVertex3f(2, 1, 4) glEnd() def keyboard(key, x, y): global flatShade if key == chr(27): sys.exit(0) elif key == ' ': flatShade = not flatShade glutPostRedisplay() glutInit(sys.argv) glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH) glutInitWindowSize(400, 400) glutInitWindowPosition(0,0) glutCreateWindow(sys.argv[0]) glutDisplayFunc(draw) glutKeyboardFunc(keyboard) glEnable(GL_DEPTH_TEST) glutMainLoop()