# -*- coding: cp936 -*-
#OpenGL 编程指南第7版 程序示例 prog1-3.py
#双缓冲程序,绘制一个旋转的方块
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
spin=0.0
def init():
glClearColor(0.0,0.0,0.0,0.0)
glShadeModel(GL_FLAT)
def Display():
glClear(GL_COLOR_BUFFER_BIT)
glPushMatrix()
glRotatef(spin,0.0,0.0,1.0)
glColor3f(1.0,1.0,1.0)
glRectf(-25.0,-25.0,25.0,25.0)
glPopMatrix()
glutSwapBuffers()
def spinDisplay():
global spin
spin = spin + 2.0
if spin > 360.0:
spin = spin - 360.0
glutPostRedisplay()
def reshape(w,h):
glViewport(0,0,w,h)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glOrtho(-50.0,50.0,-50.0,50.0,-1.0,1.0)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
def mouse(button,state,x,y):
if button==GLUT_LEFT_BUTTON:
if state == GLUT_DOWN:
glutIdleFunc(spinDisplay)
elif button==GLUT_MIDDLE_BUTTON:
if state == GLUT_DOWN:
glutIdleFunc(0)
if __name__ == "__main__":
glutInit()
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB)
glutInitWindowSize(250,250)
glutInitWindowPosition(100,100)
glutCreateWindow(b'双缓冲示例程序prog1-3.py')
init()
glutDisplayFunc(Display)
glutReshapeFunc(reshape)
glutMouseFunc(mouse)
glutMainLoop()