2 // See original source
and C based tutorial at
:
3 // http
://nehe
.gamedev
.net
/data
/lessons
/lesson
.asp?lesson
=05
5 // Ported to Io by Steve Dekorte
2003
6 // 2004-08-01 Updated by Doc O
'Leary
9 Demo appendProto(OpenGL)
14 Demo reshape := method(w, h,
15 glViewport(0, 0, w, h)
16 glMatrixMode(GL_PROJECTION)
18 gluPerspective(45.0, w / h, 0.1, 100.0)
19 glMatrixMode(GL_MODELVIEW)
23 Demo InitGL := method(
24 glShadeModel(GL_SMOOTH)
25 glClearColor(0, 0, 0, 0)
27 glEnable(GL_DEPTH_TEST)
28 glDepthFunc(GL_LEQUAL)
30 glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)
33 // Finally, some real 3D shapes.
34 Demo display := method(
35 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
37 glTranslated(-1.5, 0.0, -6.0)
39 glRotated(rtri, 0, 1, 0) // Rotate The Pyramid On It's Y Axis
40 glBegin(GL_TRIANGLES
) // Start Drawing The Pyramid
42 glColor3d(1, 0, 0) // Red
43 glVertex3d(0, 1, 0) // Top Of
Triangle (Front
)
44 glColor3d(0, 1, 0) // Green
45 glVertex3d(-1, -1, 1) // Left Of
Triangle (Front
)
46 glColor3d(0, 0, 1) // Blue
47 glVertex3d(1, -1, 1) // Right Of
Triangle (Front
)
49 glColor3d(1, 0, 0) // Red
50 glVertex3d(0, 1, 0) // Top Of
Triangle (Right
)
51 glColor3d(0, 0, 1) // Blue
52 glVertex3d(1, -1, 1) // Left Of
Triangle (Right
)
53 glColor3d(0, 1, 0) // Green
54 glVertex3d(1, -1, -1) // Right Of
Triangle (Right
)
56 glColor3d(1, 0, 0) // Red
57 glVertex3d(0, 1, 0) // Top Of
Triangle (Back
)
58 glColor3d(0, 1, 0) // Green
59 glVertex3d(1, -1, -1) // Left Of
Triangle (Back
)
60 glColor3d(0, 0, 1) // Blue
61 glVertex3d(-1, -1, -1) // Right Of
Triangle (Back
)
63 glColor3d(1, 0, 0) // Red
64 glVertex3d(0, 1, 0) // Top Of
Triangle (Left
)
65 glColor3d(0, 0, 1) // Blue
66 glVertex3d(-1, -1, -1) // Left Of
Triangle (Left
)
67 glColor3d(0, 1, 0) // Green
68 glVertex3d(-1, -1, 1) // Right Of
Triangle (Left
)
73 glTranslated(1.5, 0, -7) // Move Right And Into The Screen
75 glRotated(rquad
, 1, 1, 1) // Rotate The Cube On X
, Y
& Z
76 glBegin(GL_QUADS
) // Start Drawing The Cube
78 glColor3d(0, 1, 0) // Set The
Color To Green
79 glVertex3d( 1, 1,-1) // Top Right Of The
Quad (Top
)
80 glVertex3d(-1, 1,-1) // Top Left Of The
Quad (Top
)
81 glVertex3d(-1, 1, 1) // Bottom Left Of The
Quad (Top
)
82 glVertex3d( 1, 1, 1) // Bottom Right Of The
Quad (Top
)
84 glColor3d(1, 0.5, 0) // Set The
Color To Orange
85 glVertex3d( 1,-1, 1) // Top Right Of The
Quad (Bottom
)
86 glVertex3d(-1,-1, 1) // Top Left Of The
Quad (Bottom
)
87 glVertex3d(-1,-1,-1) // Bottom Left Of The
Quad (Bottom
)
88 glVertex3d( 1,-1,-1) // Bottom Right Of The
Quad (Bottom
)
90 glColor3d(1, 0, 0) // Set The
Color To Red
91 glVertex3d( 1, 1, 1) // Top Right Of The
Quad (Front
)
92 glVertex3d(-1, 1, 1) // Top Left Of The
Quad (Front
)
93 glVertex3d(-1,-1, 1) // Bottom Left Of The
Quad (Front
)
94 glVertex3d( 1,-1, 1) // Bottom Right Of The
Quad (Front
)
96 glColor3d(1, 1, 0) // Set The
Color To Yellow
97 glVertex3d( 1,-1,-1) // Bottom Left Of The
Quad (Back
)
98 glVertex3d(-1,-1,-1) // Bottom Right Of The
Quad (Back
)
99 glVertex3d(-1, 1,-1) // Top Right Of The
Quad (Back
)
100 glVertex3d( 1, 1,-1) // Top Left Of The
Quad (Back
)
102 glColor3d(0, 0, 1) // Set The
Color To Blue
103 glVertex3d(-1, 1, 1) // Top Right Of The
Quad (Left
)
104 glVertex3d(-1, 1,-1) // Top Left Of The
Quad (Left
)
105 glVertex3d(-1,-1,-1) // Bottom Left Of The
Quad (Left
)
106 glVertex3d(-1,-1, 1) // Bottom Right Of The
Quad (Left
)
108 glColor3d(1, 0, 1) // Set The
Color To Violet
109 glVertex3d( 1, 1,-1) // Top Right Of The
Quad (Right
)
110 glVertex3d( 1, 1, 1) // Top Left Of The
Quad (Right
)
111 glVertex3d( 1,-1, 1) // Bottom Left Of The
Quad (Right
)
112 glVertex3d( 1,-1,-1) // Bottom Right Of The
Quad (Right
)
113 glEnd
// Done Drawing The Quad
121 Demo timer
:= method(v
,
128 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH
)
129 glutInitWindowSize(640, 480)
130 glutCreateWindow("Jeff Molofee's GL Code Tutorial ... NeHe '99")
131 glutEventTarget(self)