1 USING: arrays kernel math opengl opengl.gl opengl.glu ui
2 ui.gadgets ui.render threads accessors ;
5 TUPLE: nehe4-gadget < gadget rtri rquad thread quit? ;
11 : <nehe4-gadget> ( -- gadget )
12 nehe4-gadget new-gadget
16 M: nehe4-gadget pref-dim* ( gadget -- dim )
17 drop width height 2array ;
19 M: nehe4-gadget draw-gadget* ( gadget -- )
20 GL_PROJECTION glMatrixMode
22 45.0 width height / >float 0.1 100.0 gluPerspective
23 GL_MODELVIEW glMatrixMode
25 GL_SMOOTH glShadeModel
26 0.0 0.0 0.0 0.0 glClearColor
28 GL_DEPTH_TEST glEnable
30 GL_PERSPECTIVE_CORRECTION_HINT GL_NICEST glHint
31 GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT bitor glClear
33 -1.5 0.0 -6.0 glTranslatef
34 dup rtri>> 0.0 1.0 0.0 glRotatef
38 0.0 1.0 0.0 glVertex3f
40 -1.0 -1.0 0.0 glVertex3f
42 1.0 -1.0 0.0 glVertex3f
47 1.5 0.0 -6.0 glTranslatef
48 dup rquad>> 1.0 0.0 0.0 glRotatef
51 -1.0 1.0 0.0 glVertex3f
52 1.0 1.0 0.0 glVertex3f
53 1.0 -1.0 0.0 glVertex3f
54 -1.0 -1.0 0.0 glVertex3f
57 [ 0.15 - ] change-rquad drop ;
59 : nehe4-update-thread ( gadget -- )
60 dup quit?>> [ drop ] [
66 M: nehe4-gadget graft* ( gadget -- )
68 [ nehe4-update-thread ] in-thread drop ;
70 M: nehe4-gadget ungraft* ( gadget -- )
74 <nehe4-gadget> "NeHe Tutorial 4" open-window ;