《高效学习OpenGL》 之 GLU的NURBS的接口 gluNewNurbsRenderer(),gluNurbsProperty(),gluNurbsSurface(),gluNurbsCal()

创建一个NURBS对象:

   GLUnurbs* gluNewNurbsRenderer (void);
   //创建一个NURBS对象nobj,并返回一个指向这个新对象的指针
销毁NURBS对象:

void gluDeleteNurbsRenderer(GLUnurbs *nobj);

控制NURBS对象的属性:

   gluNurbsProperty(theNurb, GLU_SAMPLING_TOLERANCE, 25.0);//控制分格化的顶点简单的进行渲染
   gluNurbsProperty(theNurb, GLU_DISPLAY_MODE, GLU_FILL);//把表面渲染为多边形
   void gluNurbsProperty (GLUnurbs *nobj, GLenum property, GLfloat value );
   //控制NURBS对象的属性,property指定了属性,他可以是GLU_DISPLAY_MODE或GLU_SAMPLING_TOLERANCE,value表示这个属性应该是什么值
返回NURBS对象nobj的property属性的当前值:
		gluGetNurbsProperty(GLUnurbs *nobj, GLenum property, GLfloat* value)
		//返回NURBS对象nobj的property属性的当前值,返回值放在value数组中
创建NURBS的曲面或表面:

   gluBeginSurface(theNurb);
   gluNurbsSurface(theNurb, 
                   8, knots, 8, knots,
                   4 * 3, 3, &ctlpoints[0][0][0], 
                   4, 4, GL_MAP2_VERTEX_3);
   gluEndSurface(theNurb);

   void gluNurbsSurface(     
	   GLUnurbs            *nobj, 
	   GLint               sknot_count, //节点数量
	   float               *sknot, //节点序列
	   GLint               tknot_count, //节点数量
	   GLfloat             *tknot, //节点序列
	   GLint               s_stride, //每个参数化方向上控制点之间的浮点值的数量
	   GLint               t_stride, 
	   GLfloat             *ctlarray, //指向包含了控制点的数组
	   GLint               sorder, //表面多项式的阶数
	   GLint               torder, //表面多项式的阶数
	   GLenum              type);//表示二维求值器类型


从NURBS分格化对象获取图元:

   gluNurbsCallback(theNurb, GLU_ERROR, 
                    nurbsError);
   void gluNurbsCallback (GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)() );
   //nobj是进行分格化的NURBS对象,which是用于标识回调函数的枚举值,原型如下图




  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚坏叔叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值