Initial revision
diff --git a/Demo/sgi/gl/mixing.py b/Demo/sgi/gl/mixing.py
new file mode 100755
index 0000000..d6b9ecf
--- /dev/null
+++ b/Demo/sgi/gl/mixing.py
@@ -0,0 +1,116 @@
+#! /usr/local/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  ()