Name
gl.EvalMesh -- compute a one- or two-dimensional grid of points or lines
Synopsis
gl.EvalMesh(mode, i1, i2[, j1, j2])
Function
This function can be used to compute a one- or two-dimensional grid of points or lines. If you omit the last two parameters, a one-dimensional mesh is computed, otherwise a two-dimensional will be computed.

gl.MapGrid() and gl.EvalMesh() are used in tandem to efficiently generate and evaluate a series of evenly spaced map domain values. gl.EvalMesh() steps through the integer domain of a one- or two-dimensional grid, whose range is the domain of the evaluation maps specified by gl.Map(). mode determines whether the resulting vertices are connected as points, lines, or filled polygons (the latter is only supported for two-dimensional grids). In the one-dimensional case, gl.EvalMesh(), the mesh is generated as if the following code fragment were executed:

 
gl.Begin(type)
For Local i = i1 To i2 Do gl.EvalCoord(i*du+u1)
gl.End()

where du = (u2-u1)/n and n, u1, and u2 are the arguments to the most recent gl.MapGrid() command. type is #GL_POINTS if mode is #GL_POINT, or #GL_LINES if mode is #GL_LINE. The one absolute numeric requirement is that if i = n, then the value computed from i*du+u1 is exactly u2.

In the two-dimensional case, gl.EvalMesh(), let

 
du = (u2-u1)/n
dv = (v2-v1)/m,

where n, u1, u2, m, v1, and v2 are the arguments to the most recent gl.MapGrid() command. Then, if mode is #GL_FILL, the gl.EvalMesh() command is equivalent to:

 
For Local j = j1 To j2 - 1
   gl.Begin(#GL_QUAD_STRIP)
   For Local i = i1 To i2
      gl.EvalCoord(i*du+u1, j*dv+v1)
      gl.EvalCoord(i*du+u1, (j+1)*dv+v1)
   Next
   gl.End()
Next

If mode is #GL_LINE, then a call to gl.EvalMesh() is equivalent to:

 
For Local j = j1 To j2
   gl.Begin(#GL_LINE_STRIP)
   For Local i = i1 To i2
      gl.EvalCoord(i*du+u1, j*dv+v1)
   Next
   gl.End()
Next

For Local i = i1 To i2
   gl.Begin(#GL_LINE_STRIP)
   For Local j = j1 To j2
      gl.EvalCoord(i*du+u1, j*dv+v1)
   Next
   gl.End()
Next

And finally, if mode is #GL_POINT, then a call to gl.EvalMesh() is equivalent to:

 
gl.Begin(#GL_POINTS)
For Local j = j1 To j2
   For Local i = i1 To i2
      gl.EvalCoord(i*du+u1, j*dv+v1)
   Next
Next
gl.End()

In all three cases, the only absolute.numeric requirements are that if i = n, then the value computed from i*du+u1 is exactly u2, and if j = m, then the value computed from j*dv+v1 is exactly v2.

Please consult an OpenGL reference manual for more information.

Inputs
mode
specifies whether to compute a mesh of points, lines or polygons; symbolic constants #GL_POINT, #GL_LINE, and in case of a two-dimensional mesh, #GL_FILL are accepted
i1
specify the first integer value for grid domain variable i
i2
specify the last integer value for grid domain variable i
j1
optional: specify the first integer value for grid domain variable j
j2
optional: specify the last integer value for grid domain variable j
Errors
#GL_INVALID_ENUM is generated if mode is not an accepted value.

#GL_INVALID_OPERATION is generated if gl.EvalMesh() is executed between the execution of gl.Begin() and the corresponding execution of gl.End() .

Associated gets
gl.Get() with argument #GL_MAP1_GRID_DOMAIN

gl.Get() with argument #GL_MAP2_GRID_DOMAIN

gl.Get() with argument #GL_MAP1_GRID_SEGMENTS

gl.Get() with argument #GL_MAP2_GRID_SEGMENTS


Show TOC