glVertex

Definition: include pGUI.e
include opengl.e

glVertex(atom x, y, z=0, w=1)
-- or --
glVertex3d(atom {x,y,z}) (actually declared as a single sequence parameter)
Description: Specifies a vertex.

x: Specifies the x-coordinate of a vertex.
y: Specifies the y-coordinate of a vertex.
z: Specifies the z-coordinate of a vertex.
w: Specifies the w-coordinate of a vertex.
Remarks The glVertex procedures are used within glBegin/glEnd pairs to specify point, line, and polygon vertices.
The current color, normal, and texture coordinates are associated with the vertex when glVertex is called.
When only x and y are specified, z defaults to 0.0 and w defaults to 1.0.
When x, y, and z are specified, w defaults to 1.0.
Invoking glVertex outside of a glBegin/glEnd pair results in undefined behavior.

A vertex with w == 1.0 stays in place whereas w == 0.0 moves it to infinity. The following may (or may not) help:
glLoadIdentity()
glTranslatef(a, b, c)
glVertex(x, y, z)
--  |1 0 0 a|   |x|   |x+a|
--  |0 1 0 b|   |y|   |y+b|
--  |0 0 1 c| * |z| = |z+c|
--  |0 0 0 1|   |1|   |1|

glLoadIdentity()
glTranslatef(a, b, c)
glVertex(x, y, z, 3)
--  |1 0 0 a|   |x|   |x+3a|
--  |0 1 0 b|   |y|   |y+3b|
--  |0 0 1 c| * |z| = |z+3c|
--  |0 0 0 1|   |3|   |3|


There are 24 C functions (see index, coloured illegal and linked here) named glVertexNx[v], where N is 2..4, x is d/f/i/s for double/float/integer/short, and the v if present indicates the parameter is a pointer to the first of such (only useful if there was some good reason why you already had your double/float/integer/short values poked into some allocated memory, let me know if you find such a need).
The optional parameters and generic atom types of phix mean these can and should all be wrapped into a single pGUI function.
The glVertex3d routine was made an exception because some code already had the required parameters in a sequence, and it would be pointless to de-sequence that only to re-sequence it shortly after.
See Also: glBegin, xor_bits, xor_bits, xor_bits, glEnd, xor_bits, xor_bits, glLoadIdentity, xor_bits, glNormal, xor_bits, int_to_bits
DEV See also //glBegin glCallList glColor glEdgeFlag //glEnd glEvalCoord glIndex //glLoadIdentity glMaterial //glNormal glRect glTexCoord