指定回调
最多可以为细化指定五个回调函数。 未指定的任何函数都不会在细化期间调用,并且你不会获取它们可能已返回的任何信息。 使用 gluTessCallback 指定回调函数。
gluTessCallback 函数将回调函数 fn 与细化对象 tessobj 相关联。 回调的类型由参数类型决定,参数 类型可以是 GLU_BEGIN、 GLU_EDGE_FLAG、 GLU_VERTEX、 GLU_END或 GLU_ERROR。 五个可能的回调函数具有以下原型。
回调函数 | 原型 |
---|---|
GLU_BEGIN | voidbegin (GLenum类型 ) ; |
GLU_EDGE_FLAG | voidedgeFlag (GLbooleanflag ) ; |
GLU_VERTEX | void顶点 (**void ***data ) ; |
GLU_END | voidend ( void ) ; |
GLU_ERROR | void错误 (GLenumerrno ) ; |
若要更改回调函数,请使用新函数调用 gluTessCallback 。 若要消除回调函数而不将其替换为新函数,请为相应函数传递 gluTessCallback 一个 null 指针。
随着细化继续进行,回调函数的调用方式类似于使用 OpenGL 函数 glBegin、 glEdgeFlag、 glVertex 和 glEnd 的方式。
使用三个可能的参数之一调用 GLU_BEGIN 回调函数:
- GL_TRIANGLE_FAN
- GL_TRIANGLE_STRIP
- GL_TRIANGLES
在调用 GLU_BEGIN 回调函数之后,在调用与 GLU_END关联的回调函数之前,将调用 GLU_EDGE_FLAG 和 GLU_VERTEX 回调的某种组合。 关联的顶点和边缘标志在 glBegin (GL_TRIANGLE_FAN) 、glBegin (GL_TRIANGLE_STRIP) 或 glBegin (GL_TRIANGLES **) ** 与匹配的 glEnd 之间的解释方式完全一样。
由于边缘标志在三角形扇形或三角形条带中没有意义,因此如果有与 GLU_EDGE_FLAG关联的回调函数,则仅使用 GL_TRIANGLES 调用 GLU_BEGIN回调。 GLU_EDGE_FLAG回调函数的工作方式类似于 OpenGL glEdgeFlag 函数。
如果在细化过程中出现错误,则会调用错误回调函数。 错误回调函数将传递 GLU 错误号。 可以使用 gluErrorString 函数获取描述错误的字符串。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈