Clean up some duplication
[factor/jcg.git] / extra / nehe / 3 / 3.factor
blob75f2e573cc5a406718e339a3e03c59a2144f0ce0
1 USING: arrays kernel math opengl opengl.gl opengl.glu
2 opengl.demo-support ui ui.gadgets ui.render ;
3 IN: nehe.3
5 TUPLE: nehe3-gadget < gadget ;
7 : width 256 ;
8 : height 256 ;
10 : <nehe3-gadget> (  -- gadget )
11   nehe3-gadget new-gadget ;
13 M: nehe3-gadget pref-dim* ( gadget -- dim )
14   drop width height 2array ;
16 M: nehe3-gadget draw-gadget* ( gadget -- )
17   drop
18   GL_PROJECTION glMatrixMode
19   glLoadIdentity
20   45.0 width height / >float 0.1 100.0 gluPerspective
21   GL_MODELVIEW glMatrixMode
22   glLoadIdentity
23   GL_SMOOTH glShadeModel
24   0.0 0.0 0.0 0.0 glClearColor
25   1.0 glClearDepth
26   GL_DEPTH_TEST glEnable
27   GL_LEQUAL glDepthFunc
28   GL_PERSPECTIVE_CORRECTION_HINT GL_NICEST glHint
29   GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT bitor glClear
30   glLoadIdentity
31   -1.5 0.0 -6.0 glTranslatef
32   GL_TRIANGLES [
33     1.0 0.0 0.0 glColor3f
34     0.0 1.0 0.0 glVertex3f
35     0.0 1.0 0.0 glColor3f
36     -1.0 -1.0 0.0 glVertex3f
37     0.0 0.0 1.0 glColor3f
38     1.0 -1.0 0.0 glVertex3f
39   ] do-state
40   3.0 0.0 0.0 glTranslatef
41   0.5 0.5 1.0 glColor3f
42   GL_QUADS [
43     -1.0 1.0 0.0 glVertex3f
44     1.0 1.0 0.0 glVertex3f
45     1.0 -1.0 0.0 glVertex3f
46     -1.0 -1.0 0.0 glVertex3f
47   ] do-state ;
49 : run3 ( -- )
50   <nehe3-gadget> "NeHe Tutorial 3" open-window ;