OpenGL编程轻松入门之二次几何体
這一章我們講一下二次幾何物體的繪制。二次幾何物體的繪制有幾種不同的方式,在本例中可以看出不同的繪制方式的不同效果,如圖十五所示。
例13:本例使用GLU庫函數繪制了四個幾何物體,分別為圓柱體、球體、圓盤和部分圓盤。
| #include <windows.h> #include <GL/glut.h> #include <math.h> /*聲明四個二次曲面物體*/ static float light_ambient[] = {0.1,0.1,0.1,1.0}; static float front_mat_shininess[] = {60.0}; static float back_mat_shininess[] = {60.0}; static float Imodel_ambient[] = {1.0,1.0,1.0,1.0}; void myInit(void) void myDisplay(void) void myReshape(int w,int h) int main(int argc,char ** argv) |
·gluNewQuadric創建一個二次對象。這個函數創建并返回一個指向新的二次對象的指針。當調用二次描述和控制函數是指向這個對象。如果返回值為0則表明沒有足夠的空間分配給該對象。
·glQuadricDrawStyle函數指定二次對象的繪制方式。本例中圓柱體的繪制方式為GLU_FILL。含義為用多邊形原繪制本二次對象,多邊形的繪制方式為逆時針。球體的繪制方式為GL_SILHOUETTE,即除邊界外用一系列線來繪制二次對象。圓盤的繪制方式為GL_LINE,即用一系列線來繪制二次對象。部分圓盤的繪制方式為GL_POINT,即用一系列點來繪制二次對象。
·glQuadricNormals,指定二次對象使用的法向量類型。
·glQuadricOrientation,指定二次對象的內面或外面方位。GLU_OUTSIDE為缺省值,表明使用指向內面的法相量繪出二次對象,GLU_INSIDE表明使用指向外面的法相量繪出二次對象。
| 圖十五:二次幾何體 |
·glQuadricTexture指定二次對象是否使用紋理。GL_FALSE為缺省值。
·void gluCylinder(GLUquadricObj *qobj,GLdouble baseRadius,GLdouble topRadius,GLdouble height,Glint slices,Glint stacks)繪制一個圓柱體。
qobj指明是哪個二次對象。
baseRadius圓柱體在z=0時的半徑。
topRadius圓柱體在z=height時的半徑。
height圓柱體的高。
slices圍繞著z軸分片的個數。
stacks順著z軸分片的個數。stacks和slices垂直。
·void gluSphere(GLUquadricObj *qobj,GLdouble radius,Glint slices,Glint stacks)繪制一個球形。
qobj指明是哪個二次對象。
radius球體半徑。
slices圍繞著z軸分片的個數。
stacks順著z軸分片的個數。
·void gluDisk(GLUquadricObj *qobj,GLdouble innerRadius,GLdouble outerRadius,Glint slices,Glint loops)繪制一個圓盤。
qobj指明是哪個二次對象。
innerRadius圓盤的內部半徑,可能為0。
outerRadius圓盤的外部半徑。
slices圍繞著z軸分片的個數。
loops圓盤同心圓個數。
·void gluPartialDisk(GLUquadricObj *qobj,GLdouble innerRadius,GLdouble outerRadius,Glint slices,Glint loops,GLdouble startAngle,GLdouble sweepAngle)繪制一個圓盤的一部分。
startAngle起始角度,單位為度。
sweepAngle掃描角,單位為度。
轉載于:https://blog.51cto.com/dxwang/686007
總結
以上是生活随笔為你收集整理的OpenGL编程轻松入门之二次几何体的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果电脑Mac系统如何下载安装谷歌Chr
- 下一篇: 2011.10.16