要畫二次曲面圖形,首先咱們要建立一個GLUquadricObj(二次曲面聲明類型)。函數
具體以下:oop
<span style=
"color: #339966;"
>
//聲明對象</span>
GLUquadricObj *uquadric;
<span style=
"color: #339966;"
>
//初始化二次曲面並建立一個指向二次曲面的指針</span>
uquadric = gluNewQuadric();
<span style=
"color: #339966;"
>
//在二次曲面的表面建立平滑的法向量</span>
gluQuadricNormals(uquadric,GL_SMOOTH);
<span style=
"color: #339966;"
>
//容許二次曲面使用紋理</span>
gluQuadricTexture(uquadric,TRUE);
|
建立完二次曲面聲明並初始化以後,咱們就能夠利用這個指針繪製多個曲面圖形了。spa
圓柱形:指針
void gluCylinder( GLUquadric* quad, --建立的二次曲面指針
GLdouble base, --底面圓形的半徑
GLdouble top, --頂面圓形的半徑
GLdouble height, --圓錐的高度
GLint slices, --緯線 環繞z軸的細分面(數字越大越平滑,相應的速度越慢)
GLint stacks ) --經線 沿着z軸的細分面(數字越大越平滑,相應的速度越慢)code
圓錐:orm
圓錐的實現函數和圓柱體是同樣的,只要將頂面圓形的半徑設爲0就能夠了。對象
圓面:ci
void gluDisk(
GLUquadricObj *qobj, --建立的二次曲面指針
GLdouble innerRadius, --內圓的半徑
GLdouble outerRadius, --外圓的半徑
GLint slices, --沿半徑的細切面(數字越大越平滑,相應的速度越慢)
GLint loops --繞圓心的細切面(數字越大越平滑,相應的速度越慢)
);it
球體:io
void gluSphere(
GLUquadricObj *qobj, --建立的二次曲面指針
GLdouble radius, --球半徑
GLint slices, --緯線細分面(數字越大越平滑,相應的速度越慢)
GLint stacks --經線細分面(數字越大越平滑,相應的速度越慢)
);
扇形:
void gluPartialDisk(
GLUquadricObj *qobj, --建立的二次曲面指針
GLdouble innerRadius, --內圓的半徑
GLdouble outerRadius, --外圓的半徑
GLint slices, --沿半徑的細切面(數字越大越平滑,相應的速度越慢)
GLint loops --繞圓心的細切面(數字越大越平滑,相應的速度越慢)
GLdouble startAngle, --扇形開始的角度
GLdouble sweepAngle --扇形轉過的角度
);