<CsoundSynthesizer>
<CsOptions>

-+Y ;*** no audio

</CsOptions>
<CsInstruments>

	sr = 100
	kr = 100
	ksmps = 1
	nchnls = 1

	GLfps	30
	GLpanel	"OpenGL panel", 512, 512
	GLpanel_end
	FLrun

#include "OpenGL.h"

gi1	ftgen	1,0,256,19,1,1,0,1
gi2	ftgen	2,0,2048,10,1,0,0,0,.3,0,0,0,0,0,.1,0,0,0,0,0,0,0,.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,.1
gi3	ftgen	3,0,1024,10,1

giBez	ftgen	10,0,256, -2,	-4.0, 0.0, 4.0, \
				0.0,  0.0, 4.0, \
				4.0,  0.0, 4.0, \
						\
				-4.0, 0.0, 0.0, \
				0.0, -30.0,0.0, \
				4.0,  0.0, 0.0, \
                              		 \
				-4.0, 0.0, -4.0, \
				0.0,  30.0,-4.0, \
				4.0,  0.0, -4.0, \
					  \		
				-4.0, 0.0, -8.0, \
				0.0,  0.0, -8.0, \
				4.0,  0.0, -8.0


	giTex1	GLloadTexture "envmap2.png", $PNG_ALPHA,$GL_REPEAT
	glTexGeni $GL_S, $GL_SPHERE_MAP
	glTexGeni $GL_T, $GL_SPHERE_MAP


          glEnable	$GL_TEXTURE_GEN_S
          glEnable	$GL_TEXTURE_GEN_T
	glEnable	$GL_TEXTURE_2D


	glEnable	$GL_DEPTH_TEST	
	glEnable	$GL_CULL_FACE	
	glEnable	$GL_LIGHTING
	glEnable	$GL_LIGHT0
	glEnable	$GL_COLOR_MATERIAL
	glEnable	$GL_AUTO_NORMAL

	glFrontFace $GL_CCW	
	glMaterial $GL_SPECULAR, .8,.8,0,1
	GLshininess 19
	glColor3	1,1,1
GLinsert_i $GL_INIT

	glMatrixMode	$GL_PROJECTION 
	glLoadIdentity
	gluPerspective	90,.1,100
	glMatrixMode	$GL_MODELVIEW 
	glLoadIdentity
	glClearColor	0,0,0,0
	
GLinsert_i $GL_NOT_VALID
	glClear	$GL_COLOR_BUFFER_BIT + $GL_DEPTH_BUFFER_BIT 

GLinsert_i 1


;///////////////////////////////////////////////////
	instr	1
;///////////////////////////////////////////////////


k1	oscili	1,.05,1,.75
k2	oscili	1,.023456,1
k3	oscili	1,.043215,1

	glLoadIdentity
	glTranslate	0,0,-6
	glPushMatrix
	glRotate		k1*360,1,1,0
	glRotate		k2*360,1,0,0
	glFrontFace $GL_CCW	
	glutTorus	.5,  1,  10,   20, 1
	glFrontFace $GL_CW	
	glMap2 $GL_MAP2_VERTEX_3,	\ ; Type of data generated
		0.0,		\ ; Lower u range
		10.0,		\ ; Upper u range
		3,		\ ; Distance between points in the data
		3,		\ ; Dimension in u direction (order)
		0.0,		\ ; Lover v range
		10.0,		\ ; Upper v range
		9,		\ ; Distance between points in the data
		4,		\ ; Dimension in v direction (order)
		giBez		  ; array of control points

	glEnable	$GL_MAP2_VERTEX_3	  ; Enable the evaluator
	glMapGrid2 30, 0.0, 10.0, 30, 0.0, 10.0 ; Map a grid of 30 points from 0 to 10
	glEvalMesh2 $GL_FILL, 0, 30, 0, 30 	; Evaluate the grid, using lines

	glPopMatrix

GLinsert	1.1

	endin


</CsInstruments>
<CsScore>

i1 0 3600 1
e


</CsScore>
</CsoundSynthesizer>
