# Example of GLUT text functions, applied to a single character # # Dave Pape # 27 September 2003 import sys from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * viewDistance = 30 viewRotY = 0 viewRotX = 0 def draw(): global viewRotX, viewRotY, viewDistance glClearColor(0.5, 0.7, 1.0, 0.0) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glLoadIdentity() glTranslatef(0.0, 0.0, -viewDistance) glRotatef(viewRotX, 1.0, 0.0, 0.0) glRotatef(viewRotY, 0.0, 1.0, 0.0) glColor3f(1, 0, 0) glPushMatrix() # glTranslatef(-1, -1.5, 0) # glScalef(0.005, 0.005, 0.005) glutStrokeCharacter(GLUT_STROKE_ROMAN, ord("A")) glPopMatrix() glColor3f(0, 0, 0) glRasterPos3f(-1, 1, 0) glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, ord("A")) glutSwapBuffers() def keyboard(key, x, y): global viewDistance if key == chr(27): sys.exit(0) elif key == '.': viewDistance = viewDistance - 1 elif key == ',': viewDistance = viewDistance + 1 glutPostRedisplay() def specialkey(key,x,y): global viewRotX, viewRotY if key == GLUT_KEY_LEFT: viewRotY = viewRotY + 3 elif key == GLUT_KEY_RIGHT: viewRotY = viewRotY - 3 elif key == GLUT_KEY_UP: viewRotX = viewRotX + 3 elif key == GLUT_KEY_DOWN: viewRotX = viewRotX - 3 glutPostRedisplay() glutInit([]) glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH) glutInitWindowSize(400,400) glutCreateWindow(sys.argv[0]) glutDisplayFunc(draw) glutKeyboardFunc(keyboard) glutSpecialFunc(specialkey) glEnable(GL_DEPTH_TEST) glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(50.0, 1.0, 0.1, 1000.0) glMatrixMode(GL_MODELVIEW) glutMainLoop()