| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- SuperStrict
- 'Simple GL cube demo
- 'Written by Birdie
- Framework MaxGui.Drivers
- Import brl.GLGraphics
- Import brl.timerdefault
- Import brl.eventqueue
- SetGraphicsDriver GLGraphicsDriver(),GRAPHICS_BACKBUFFER|GRAPHICS_DEPTHBUFFER
- Global ax#, ay#,tim#
- Local w:TGadget = CreateWindow("Easy GL Cube in a GUI window", 10, 10, 512, 512 )
- Local c:TGadget = CreateCanvas(0,0,w.ClientWidth(),w.ClientHeight(),w,0)
- c.setlayout 1,1,1,1
- CreateTimer( 60 )
- While True
- WaitEvent()
- Select EventID()
- Case EVENT_WINDOWCLOSE
- End
- Case EVENT_TIMERTICK
- RedrawGadget c
-
- Case EVENT_GADGETPAINT
- SetGraphics CanvasGraphics( c )
- Local wid:Int = c.ClientWidth()
- Local hgt:Int = c.ClientHeight()
- Local asp# = Float(wid)/Float(hgt)
-
- glViewport 0,0,wid,hgt
- glMatrixMode GL_PROJECTION
- glLoadIdentity
- gluPerspective 45, asp, 1, 100
- gltranslatef 0,0,-50+tim
- tim=20*Cos(MilliSecs()/10.0)
-
- glMatrixMode GL_MODELVIEW
- glLoadIdentity
-
- Local global_ambient#[]=[0.6#, 0.5#, 0.3#, 1.0#]
- Local light0pos#[]= [0.0#, 5.0#, 10.0#, 1.0#]
- Local light0ambient#[]= [0.5#, 0.5#, 0.5#, 1.0#]
- Local light0diffuse#[]= [0.3#, 0.3#, 0.3#, 1.0#]
- Local light0specular#[]=[0.8#, 0.8#, 0.8#, 1.0#]
-
- Local lmodel_ambient#[]=[ 0.2#,0.2#,0.2#,1.0#]
- glLightModelfv(GL_LIGHT_MODEL_AMBIENT,lmodel_ambient)
-
- glLightModelfv(GL_LIGHT_MODEL_AMBIENT, global_ambient)
- glLightfv(GL_LIGHT0, GL_POSITION, light0pos)
- glLightfv(GL_LIGHT0, GL_AMBIENT, light0ambient)
- glLightfv(GL_LIGHT0, GL_DIFFUSE, light0diffuse)
- glLightfv(GL_LIGHT0, GL_SPECULAR, light0specular)
- glEnable(GL_LIGHTING)
- glEnable(GL_LIGHT0)
- glShadeModel(GL_SMOOTH)
- glMateriali(GL_FRONT, GL_SHININESS, 128)
-
-
- glClearColor 0,0,0.5,1
- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
- glEnable(GL_DEPTH_TEST)
-
- glRotatef ax,1,0,0
- glRotatef ay,0,1,0
- ax:+1
- ay:+5
- DrawSizeCube(7)
-
- Flip
-
- EndSelect
- Wend
- Function DrawSizeCube(size#)
- size=-size
- 'Front Face
- glBegin(GL_TRIANGLE_STRIP)
- glNormal3f( 0.0, 0.0, 1.0)
- glVertex3f( size, size,-size)
- glNormal3f( 0.0, 0.0, 1.0)
- glVertex3f(-size, size,-size)
- glNormal3f( 0.0, 0.0, 1.0)
- glVertex3f( size,-size,-size)
- glNormal3f( 0.0, 0.0, 1.0)
- glVertex3f(-size,-size,-size)
- glEnd
- 'Back Face
- glNormal3f( 0.0, 0.0, -1.0)
- glBegin(GL_TRIANGLE_STRIP)
- glVertex3f(-size, size, size)
- glVertex3f( size, size, size)
- glVertex3f(-size,-size, size)
- glVertex3f( size,-size, size)
- glEnd
- 'Right Face
- glNormal3f( 1.0, 0.0, 0.0)
- glBegin(GL_TRIANGLE_STRIP)
- glVertex3f(-size, size,-size)
- glVertex3f(-size, size, size)
- glVertex3f(-size,-size,-size)
- glVertex3f(-size,-size, size)
- glEnd
- 'Left Face
- glNormal3f( -1.0, 0.0, 0.0)
- glBegin(GL_TRIANGLE_STRIP)
- glVertex3f( size, size, size)
- glVertex3f( size, size,-size)
- glVertex3f( size,-size, size)
- glVertex3f( size,-size,-size)
- glEnd
- 'Bottom Face
- glNormal3f( 0.0, -1.0, 0.0)
- glBegin(GL_TRIANGLE_STRIP)
- glVertex3f( size, size,-size)
- glVertex3f( size, size, size)
- glVertex3f(-size, size,-size)
- glVertex3f(-size, size, size)
- glEnd
- 'Top Face
- glNormal3f( 0.0, 1.0, 0.0)
- glBegin(GL_TRIANGLE_STRIP)
- glVertex3f( size,-size,-size)
- glVertex3f(-size,-size,-size)
- glVertex3f( size,-size, size)
- glVertex3f(-size,-size, size)
- glEnd
- End Function
|