OpenGl中的Nurbs B样条曲面的封装的GLU的NURBS的接口

创建一个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是用于标识回调函数的枚举值,原型如下图

  

												

OpenGl中的Nurbs B样条曲面的封装的GLU的NURBS的接口的更多相关文章

  1. OpenGl中的Nurbs B样条曲面绘制

    NURBS 贝塞尔曲线的缺点是当我们增加很多控制点的时候,曲线变得不可控,其连续性会变差差.如果控制点很多(高阶曲线),当我们调整一个控制点的位置,对 整个曲线的影响是很大的.要获得更高级的控制,可以 ...

  2. openGL中的gl,glu,glut

    OpenGL函数库相关的API有核心库(gl).实用库(glu).辅助库(aux).实用工具库(glut).窗口库(glx.agl.wgl)和扩展函数库等.gl是核心,glu是对gl的部分封装.glx ...

  3. CSharpGL(26)在opengl中实现控件布局/渲染文字

    CSharpGL(26)在opengl中实现控件布局/渲染文字 效果图 如图所示,可以将文字.坐标轴固定在窗口的一角. 下载 CSharpGL已在GitHub开源,欢迎对OpenGL有兴趣的同学加入( ...

  4. OpenGL中glFrustum()和gluPerspective()的相互转换

    OpenGL中在窗口的大小发生变化的时候会触发resize()函数,这里会传入一个新的宽和高,在resize()函数中我们会设置投影矩阵,在可以使用OpenGL基础函数glFrustum()函数和gl ...

  5. OPenGL中的缓冲区对象

    引自:http://blog.csdn.net/mzyang272/article/details/7655464 在许多OpenGL操作中,我们都向OpenGL发送一大块数据,例如向它传递需要处理的 ...

  6. OpenGL中摄像机矩阵的计算原理

    熟悉OpenGL|ES的朋友,可能会经常设置摄像机的view矩阵,iOS中相对较好,已经封装了方向,只需要设置摄像机位置,目标点位置以及UP向量即可.下面先介绍下摄像机view矩阵的计算原理.此处假设 ...

  7. OpenGL中坐标系的理解(一)

    在OpenGL中,存在着至少存在着三种矩阵,对应着函数glMatrixMode()的三个参数:GL_MODELVIEW,GL_PROJECTION,GL_TEXTURE. 以下主要描述GL_MODEL ...

  8. CSharpGL(6)在OpenGL中绘制UI元素

    CSharpGL(6)在OpenGL中绘制UI元素 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立的Demo,更适合入 ...

  9. Opengl中矩阵和perspective/ortho的相互转换

    Opengl中矩阵和perspective/ortho的相互转换 定义矩阵 Opengl变换需要用四维矩阵.我们来定义这样的矩阵. +BIT祝威+悄悄在此留下版了个权的信息说: 四维向量 首先,我们定 ...

随机推荐

  1. C++等语言中整型int等的取值范围计算方式

    举short为例说明 如果以最高位为符号位,二进制原码最大为0111111111111111=2的15次方减1=32767.最小为1111111111111111=-2的15次方减1=-32767此时 ...

  2. shell编写redis启动脚本

    ​ 安装后redis,默认系统不会自启动,如果关机或重启redis不会自行启动,linux下/etc/init.d/目录下基本上存放所有系统的大多数的启动脚本,放在这个目录下的脚本可以实现自启动操作. ...

  3. VS2013编译64位OpenSSL(附32位)

    安装ActivePerl 这个没什么好说的,直接运行msi即可. 编译OpenSSL 1.使用Visual Studio Tool中的“VS2013 x64 本机工具命令提示”来打开控制台:也可以打开 ...

  4. MySQL 通用查询日志(General Query Log)

      同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志可以帮助我们定位mysql ...

  5. 超文本传输协议http详解

    HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第 ...

  6. upstream prematurely closed connection while reading response header from upstream

    upstream prematurely closed connection while reading response header from upstream nginx配置uwsgi的时候  ...

  7. 新的方法(Set<T>)实现mvc的crud

    model层的属性为: public partial class UserInfo { public int Uid { get; set; } public string UName { get; ...

  8. Go语言优势与劣势

    Go语言的优势: 1.脚本化的语法:开发效率高,容易上手 2.静态类型+编译型,程序运行速度有保障:静态类型+编译型语言相对于动态类型+解释型语言的效率高 3.原生的支持并发编程:降低开发.维护成本/ ...

  9. IOS上架(九) AppStore编译生成ipa文件并上传

    IOS上架上传ipa文件 AppStore https://itunesconnect.apple.com delphi project>option里的CFBundleVersion 上传的版 ...

  10. Spring Boot 2.x 启动全过程源码分析

    Spring Boot 2.x 启动全过程源码分析 SpringApplication 实例 run 方法运行过程 上面分析了 SpringApplication 实例对象构造方法初始化过程,下面继续 ...