我在写一个使用OpenGL的GLU扩展做渲染NURBS类,但我意识到,我不知道如何设置控制点的权重。这不是红皮书或GLU文件和网页并没有提到太多的它,无论是。有没有可能是GLU的NURBS实现只是不包含此功能?如果是这样,我很惊讶,他们与调用它NURBS并不仅仅是B样条逃走了。

修改:改变 “结权重” 为 “控制点的权重”

有帮助吗?

解决方案

在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处理结权重是有点混乱,你可以阅读一下这里

在ctlarray和最后一个参数是你感兴趣的人。最后一个参数,类型,是二维评估器类型中的一种。通常情况下,你可能会分别使用GL_MAP2_VERTEX_3的非理性或GL_MAP2_VERTEX_4进行合理的控制点。

请参阅红皮书的进一步的细节。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top