23.2 OpenGLBlib Interface

ORIGIN 'openGLlib'
-- lib:attributes --

(* small patterns, for pretty use of repetitions as vectors *)
Vector3d:
(# data:[3]@real;
   copy:(# exit (data[1],data[2],data[3]) #);
enter (data[1],data[2],data[3])
exit @@data[1]
#);

Vector4d:
(# data:[4]@real;
   copy:(# exit (data[1],data[2],data[3],data[4]) #);
enter (data[1],data[2],data[3],data[4])
exit @@data[1]
#);

Vector3i:
(# data:[4]@integer;
   copy:(# exit (data[1],data[2],data[3],data[4]) #);
enter (data[1],data[2],data[3],data[4])
exit @@data[1]
#);

Vector4i:
(# data:[4]@integer;
   copy:(# exit (data[1],data[2],data[3],data[4]) #);
enter (data[1],data[2],data[3],data[4])
exit @@data[1]
#);



glBWireCube: (* Not very usefull, does not generate any normals/texture coords *)
  (# size:@real;
  enter size
  do
     GL_LINE_LOOP->glBegin;
     (0,0,0)->glVertex3i;
     (size,0,0)->glVertex3d;
     (size,0,-size)->glVertex3d;
     (0,0,-size)->glVertex3d;
     glEnd;
     GL_LINE_LOOP->glBegin;
     (0,size,0)->glVertex3d;
     (size,size,0)->glVertex3d;
     (size,size,-size)->glVertex3d;
     (0,size,-size)->glVertex3d;
     glEnd;
     GL_LINES->glBegin;
     (0,0,0)->glVertex3i;
     (0,size,0)->glVertex3d;
     (size,0,0)->glVertex3d;
     (size,size,0)->glVertex3d;
     (size,0,-size)->glVertex3d;
     (size,size,-size)->glVertex3d;
     (0,0,-size)->glVertex3d;
     (0,size,-size)->glVertex3d;
     glEnd;
  #);

glBSolidCube: (*NB does not compute vertex normals *)
  (# size:@real;
  enter size
  do
     GL_POLYGON->glBegin; (* bottom *)
     (0,0,0)->glVertex3i;
     (0,0,size)->glVertex3d;
     (size,0,size)->glVertex3d;
     (size,0,0)->glVertex3d;
     glEnd;
     GL_POLYGON->glBegin; (* top *)
     (0,size,0)->glVertex3d;
     (0,size,size)->glVertex3d;
     (size,size,size)->glVertex3d;
     (size,size,0)->glVertex3d;
     glEnd;
     GL_POLYGON->glBegin; (* front *)
     (0,0,size)->glVertex3d;
     (size,0,size)->glVertex3d;
     (size,size,size)->glVertex3d;
     (0,size,size)->glVertex3d;
     glEnd;
     GL_POLYGON->glBegin; (* back *)
     (0,0,0)->glVertex3d;
     (size,0,0)->glVertex3d;
     (size,size,0)->glVertex3d;
     (0,size,0)->glVertex3d;
     glEnd;
     GL_POLYGON->glBegin; (* left *)
     (0,0,0)->glVertex3i;
     (0,0,size)->glVertex3d;
     (0,size,size)->glVertex3d;
     (0,size,0)->glVertex3d;
     glEnd;
     GL_POLYGON->glBegin; (* right *)
     (size,0,0)->glVertex3d;
     (size,0,size)->glVertex3d;
     (size,size,size)->glVertex3d;
     (size,size,0)->glVertex3d;
     glEnd;
     
     
  #)


23.2 OpenGLBlib Interface
© 1994-2002 Mjølner Informatics
[Modified: Friday May 15th 1998 at 12:25]