📄 evalmesh.html
字号:
<HTML>
<BODY>
<PRE>
<STRONG>NAME</STRONG>
<STRONG>glEvalMesh1,</STRONG> <STRONG>glEvalMesh2</STRONG> - compute a one- or two-dimensional
grid of points or lines
<STRONG>C</STRONG> <STRONG>SPECIFICATION</STRONG>
void <STRONG>glEvalMesh1</STRONG>( GLenum <EM>mode</EM>,
GLint <EM>i1</EM>,
GLint <EM>i2</EM> )
<STRONG>PARAMETERS</STRONG>
<EM>mode</EM> In <STRONG>glEvalMesh1</STRONG>, specifies whether to compute a one-
dimensional mesh of points or lines. Symbolic
constants <STRONG>GL_POINT</STRONG> and <STRONG>GL_LINE</STRONG> are accepted.
<EM>i1</EM>, <EM>i2</EM>
Specify the first and last integer values for grid
domain variable i.
<STRONG>C</STRONG> <STRONG>SPECIFICATION</STRONG>
void <STRONG>glEvalMesh2</STRONG>( GLenum <EM>mode</EM>,
GLint <EM>i1</EM>,
GLint <EM>i2</EM>,
GLint <EM>j1</EM>,
GLint <EM>j2</EM> )
<STRONG>PARAMETERS</STRONG>
<EM>mode</EM> In <STRONG>glEvalMesh2</STRONG>, specifies whether to compute a two-
dimensional mesh of points, lines, or polygons.
Symbolic constants <STRONG>GL_POINT</STRONG>, <STRONG>GL_LINE</STRONG>, and <STRONG>GL_FILL</STRONG> are
accepted.
<EM>i1</EM>, <EM>i2</EM>
Specify the first and last integer values for grid
domain variable i.
<EM>j1</EM>, <EM>j2</EM>
Specify the first and last integer values for grid
domain variable j.
<STRONG>DESCRIPTION</STRONG>
<STRONG>glMapGrid</STRONG> and <STRONG>glEvalMesh</STRONG> are used in tandem to efficiently
generate and evaluate a series of evenly-spaced map domain
values. <STRONG>glEvalMesh</STRONG> steps through the integer domain of a
one- or two-dimensional grid, whose range is the domain of
the evaluation maps specified by <STRONG>glMap1</STRONG> and <STRONG>glMap2</STRONG>. <EM>mode</EM>
determines whether the resulting vertices are connected as
points, lines, or filled polygons.
In the one-dimensional case, <STRONG>glEvalMesh1</STRONG>, the mesh is
generated as if the following code fragment were executed:
glBegin (<EM>type</EM>);
for (i = <EM>i1</EM>; i <= <EM>i2</EM>; i += 1)
glEvalCoord1(i . DELTA u + u sub 1)
glEnd();
where
DELTA u = (u - u ) / 1
2 1
and n, u, and u are the arguments to the most recent
1 2
<STRONG>glMapGrid1</STRONG> command. <EM>type</EM> is <STRONG>GL_POINTS</STRONG> if <EM>mode</EM> is <STRONG>GL_POINT</STRONG>,
or <STRONG>GL_LINES</STRONG> if <EM>mode</EM> is <STRONG>GL_LINE</STRONG>.
The one absolute numeric requirement is that if i = n, then
the value computed from
i . DELTA u + u
is exactly u.
In the two-dimensional case, <STRONG>glEvalMesh2</STRONG>, let
DELTA u = (u - u )/n
2 1
DELTA v = (v - v )/m,
2 1
where n, u , u , m, v , and v
1 2 1 2
are the arguments to the most recent <STRONG>glMapGrid2</STRONG> command.
Then, if <EM>mode</EM> is <STRONG>GL_FILL</STRONG>, the <STRONG>glEvalMesh2</STRONG> command is
equivalent to:
for (j = <EM>j1</EM>; j < <EM>j2</EM>; j += 1) {
glBegin (GL_QUAD_STRIP);
for (i = <EM>i1</EM>; i <= <EM>i2</EM>; i += 1) {
glEvalCoord2(i . DELTA u + u , j . DELTA v + v );
1 1
glEvalCoord2(i . DELTA u + u , (j+1) . DELTA v + v );
1 1
}
glEnd();
}
If <EM>mode</EM> is <STRONG>GL_LINE</STRONG>, then a call to <STRONG>glEvalMesh2</STRONG> is equivalent
to:
for (j = <EM>j1</EM>; j <= <EM>j2</EM>; j += 1) {
glBegin(GL_LINE_STRIP);
for (i = <EM>i1</EM>; i <= <EM>i2</EM>; i += 1)
glEvalCoord2(i . DELTA u + u , j . DELTA v + v );
1 1
glEnd();
}
for (i = <EM>i1</EM>; i <= <EM>i2</EM>; i += 1) {
glBegin(GL_LINE_STRIP);
for (j = <EM>j1</EM>; j <= <EM>j1</EM>; j += 1)
glEvalCoord2)(i . DELTA u + u , j . DELTA v + v );
1 1
glEnd();
}
And finally, if <EM>mode</EM> is <STRONG>GL_POINT</STRONG>, then a call to <STRONG>glEvalMesh2</STRONG>
is equivalent to:
glBegin (GL_POINTS);
for (j = <EM>j1</EM>; j <= <EM>j2</EM>; j += 1) {
for (i = <EM>i1</EM>; i <= <EM>i2</EM>; i += 1) {
glEvalCoord2(i . DELTA u + u , j . DELTA v + v );
1 1
}
}
glEnd();
In all three cases, the only absolute numeric requirements
are that if i = n, then the value computed from
i . DELTA u + u is exactly u ,
1 2
and if j = m,
then the value computed from
j . DELTA v + v is exactly v .
1 2
<STRONG>ERRORS</STRONG>
<STRONG>GL_INVALID_ENUM</STRONG> is generated if <EM>mode</EM> is not an accepted
value.
<STRONG>GL_INVALID_OPERATION</STRONG> is generated if <STRONG>glEvalMesh</STRONG> is executed
between the execution of <STRONG>glBegin</STRONG> and the corresponding
execution of <STRONG>glEnd</STRONG>.
<STRONG>ASSOCIATED</STRONG> <STRONG>GETS</STRONG>
<STRONG>glGet</STRONG> with argument <STRONG>GL_MAP1_GRID_DOMAIN</STRONG>
<STRONG>glGet</STRONG> with argument <STRONG>GL_MAP2_GRID_DOMAIN</STRONG>
<STRONG>glGet</STRONG> with argument <STRONG>GL_MAP1_GRID_SEGMENTS</STRONG>
<STRONG>glGet</STRONG> with argument <STRONG>GL_MAP2_GRID_SEGMENTS</STRONG>
<STRONG>SEE</STRONG> <STRONG>ALSO</STRONG>
<STRONG>glBegin</STRONG>, <STRONG>glEvalCoord</STRONG>, <STRONG>glEvalPoint</STRONG>, <STRONG>glMap1</STRONG>, <STRONG>glMap2</STRONG>, <STRONG>glMapGrid</STRONG>
</PRE>
</BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -