在 VC++中使用 OpenGL 绘制典型曲面
摘要: 本文主要讨论了在 VC++中使用 OpenGL 绘制 Bezier、NURBS 等典型曲面的一般
性方法。
关键词: OpenGL;Bezier;NURBS;曲面绘制
OpenGL 中对复杂物体的建摸
基本几何图元是 OpenGL 进行建模的最基本的方法,但其对较复杂真实物体的建模则
比较困难。对于这些复杂物体的建模,需要用到 OpenGL 基本库和功能库函数(gl 库和
glu 库)以对图元进行扩展并完成法向计算、曲线生成和曲面构造等内容。这种对基本图元
的扩展实际也就是对点、线及多边形的扩展。OpenGL 中定义的点可具有不同大小的尺寸,
其扩展的函数形式为:
void glPointSize(GLfloat size);
其参数 size 以象素为单位设置了点的宽度,其值必须为正,缺省值 1.0。对于线的扩
展,可通过下面的函数来分别指定其宽度和绘制类型:
void glLineWidth(GLfloat width);
void glLineStipple(GLint factor,GLushort pattern);
glLineWidth()的参数 width 以象素为单位指定线宽,其值必须为正,缺省值为
1.0。glLineStipple()的参数 factor 为对模式进行拉伸的比例因子,参数 pattern 指定了线
的模式(例如 11001100 将绘制一条虚线,为 1 时绘制,为 0 时不绘制)。该函数只有在
启 用 了 函 数 glEnable(GL_LINE_STIPPLE) 后 才 可 以 使 用 , 当 不 再 使 用 时 调 用
glDisable(GL_LINE_STIPPLE)将其关闭。扩展多边形的绘制模式包括全填充式、轮廓点
式、轮廓线式及图案填充式等几种。使用时,首先调用 glPolygonMode()设置多边形的
模式设置:
void glPolygonMode(GLenum face,GLenum mode);
参数 face 为 GL_FRONT、GL_BACK 或 GL_FRONT_AND BACK;mode 取值可以是
GL_POINT、GL_LINE 或 GL_FILL,分别表示多边型的轮廓点、轮廓线和填充模式的绘制
方式。缺省设置为填充模式。设置完成后可进行图案填充的设置:
void glPolygonStipple(const GLubyte *mask);
其参数 mask 必须为一指向 32×32 大小的位图的指针,值为 1 时绘制、为 0 不绘制。
该函数的使用同样也需要进行如下启动、关闭设置:
glEnable(GL_POLYGON-STIPPLE);
评论1