代码之家  ›  专栏  ›  技术社区  ›  Kyle Simek

glu-nub-如何设置控制点权重?

  •  2
  • Kyle Simek  · 技术社区  · 15 年前

    我正在编写一个使用OpenGL的GLU扩展进行渲染的NURBS类,但我刚刚意识到我不知道如何设置控制点权重。它不在红皮书或GLU文档中,而且Web也没有提到很多内容。有没有可能glu的nub实现不包括这个特性?如果是这样的话,我很惊讶他们竟然不把它叫做B样条线,而是把它叫做了NURBS。

    编辑 :将“结权重”更改为“控制点权重”。

    1 回复  |  直到 15 年前
        1
  •  4
  •   Kornel Kisielewicz    15 年前

    你在nub术语中指出的问题是你想要一个 理性的 曲线而不是 非理性 .

    看着 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和最后一个参数是您感兴趣的参数。最后一个参数类型是二维评估器类型之一。通常,您可以分别将gl_-map2_-vertex_3用于非理性控制点或gl_-map2_-vertex_4用于理性控制点。

    Red Book 更多详情。