23.2 Glb Interface

ORIGIN 'opengl'
-- 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 Glb Interface
© 1994-2004 Mjølner Informatics
[Modified: Wednesday September 20th 2000 at 13:07]