GLU NURBS - 如何设置控制点权重?

时间:2010-01-07 06:08:55

标签: opengl nurbs glu

我正在编写一个使用OpenGL的GLU扩展来进行渲染的NURBS类,但我才意识到我不知道如何设置控制点权重。它不在红皮书或GLU文档中,并且网络也没有提及太多。 GLU的NURBS实现是否可能不包含此功能?如果是这样的话,我很惊讶他们称之为NURBS而不仅仅是B-splines。

修改:将“结重量”更改为“控制点权重”。

1 个答案:

答案 0 :(得分:4)

您在NURBS术语中陈述的问题是您需要理性曲线而不是非理性

查看我们的gluNurbsCurve原型:

void gluNurbsCurve(GLUnurbsObj *nobj, // NURBS object 
                   GLint nknots,      // number of knots
                   GLfloat *knot,     // knot values
                   GLint stride,      // stride
                   GLfloat *ctlarray, // control points array
                   GLint order,       // order of data
                   GLenum type)       // data type

其中一个参数是*knot,但它不是一个权重数组。 glu处理结重量的方式有点混乱,你可以阅读它here

ctlarray和last参数是您感兴趣的参数。最后一个参数type是二维评估器类型之一。通常,您可以将GL_MAP2_VERTEX_3分别用于非理性或GL_MAP2_VERTEX_4用于理性控制点。

有关详细信息,请参阅Red Book