text: #! /usr/local/bin/python
  
  # Use Gouraud shading to mix colors.  Requires Z-buffer.
  # It changes the color assignments so fast that you see white.
  # Left button pauses, middle rotates the square.  ESC to quit.
  # Experiment with a larger window (too slow) or smaller window (really white).
  
  from GL import *
  from gl import *
  import DEVICE
  from math import *
  
  #
  #  tekenvlak : draw a square. with bgnpolygon
  #
  def tekenvlak (vc) :
  	bgnpolygon()
  	#vcarray (vc)
  	for i in vc :
  		c3f (i[1])
  		v3f (i[0])
  	endpolygon()
  
  #
  # tekendoos : draw a box
  #
  def tekendoos (col) :
  	v = [(-5.0,0.0,0.0),(0.0,5.0,0.0),(5.0,0.0,0.0),(0.0,-5.0,0.0)]
  	vc = [(v[0],col[0]),(v[1],col[1]),(v[2],col[2]),(v[3],col[1])]
  	tekenvlak (vc)
  
  #
  # initialize gl
  #
  def initgl () :
  	#
  	# open window
  	#
  	foreground ()
  	keepaspect (1, 1)
  	prefposition (100, 500, 100, 500)
  	w = winopen ('PYTHON RGB')
  	keepaspect (1, 1)
  	winconstraints()
  	#
  	# configure pipeline (2buf, GOURAUD and RGBmode)
  	#
  	doublebuffer ()
  	zbuffer (1)
  	shademodel (GOURAUD)
  	RGBmode ()
  	gconfig ()
  	#
  	# set viewing
  	#
  	perspective (900, 1, 1.0, 10.0)
  	polarview (10.0, 0, 0, 0)
  	#
  	# ask for the REDRAW and ESCKEY events
  	#
  	qdevice(DEVICE.MOUSE2)
  	qdevice(DEVICE.MOUSE3)
  	qdevice(DEVICE.REDRAW)
  	qdevice(DEVICE.ESCKEY)
  
  
  #
  # the color black
  #
  black = 0
  #
  # GoForIT : use 2buf to redraw the object 2n times. index i is used as 
  # the (smoothly changing) rotation angle
  #
  def GoForIt(i) :
  	col = [(255.0,0.0,0.0), (0.0,255.0,0.0), (0.0,0.0,255.0)]
  	twist = 0
  	freeze = 1
  	while 1 :
  		if freeze <> 0 :
  			col[0],col[1],col[2] = col[1],col[2],col[0]
  		#
  		# clear z-buffer and clear background to light-blue
  		#
  		zclear()
  		cpack (black)
  		clear()
  		#
  		tekendoos (col)
  		#
  		swapbuffers()
  		#
  		if qtest() <> 0 :
  			dev, val = qread()
  			if dev == DEVICE.ESCKEY :
  				break
  			elif dev == DEVICE.REDRAW :
  				reshapeviewport ()
  			elif dev == DEVICE.MOUSE2 and val <> 0 :
  				twist = twist + 30
  				perspective (900, 1, 1.0, 10.0)
  				polarview (10.0, 0, 0, twist)
  			elif dev == DEVICE.MOUSE3 and val <> 0 :
  				freeze = 1 - freeze
  
  
  # the main program
  #
  def main () :
  	initgl ()
  	GoForIt (0)
  
  #
  # exec main
  #
  main  ()
  