3,881
社区成员
发帖
与我相关
我的任务
分享
static GLuint _createSphere(int m=36)//制作球体
{
GLuint g = glGenLists(1);
glNewList(g, GL_COMPILE);
{
GLUquadric* Q = gluNewQuadric();
gluQuadricOrientation( Q, GLU_OUTSIDE);
gluQuadricNormals(Q, GLU_SMOOTH);
gluSphere( Q, .5, m, m/2+1);//绘制球体(Q为指针,指向要渲染的二次方程对象。.5为半径,m为切片,m/2+1为栈)
gluDeleteQuadric(Q);
}
glEndList();
return g;
}
static GLuint _createCylinder(int m=36, int n=1)//圆柱体
{
GLuint g = glGenLists(1);
glNewList(g, GL_COMPILE);
glPushMatrix();
{
GLUquadric* Q = gluNewQuadric();//创建和初始化二次方程对象
gluQuadricOrientation( Q, GLU_OUTSIDE);//外部法线
gluQuadricNormals(Q, GLU_SMOOTH);//表面平滑法线(每个顶点都指定一条法线,垂直于被模拟的表面)
gluCylinder( Q, .5, .5, +0.5, m, n);
glScalef( 1, 1, -1); // flip z, origin at center
gluCylinder( Q, .5, .5, +0.5, m, n);//绘制圆柱体(指针,下底面半径,上底面半径,高,切片,栈)
//半径为指定圆柱体在Z=0处的半径
//切片为指定z轴周围的子区域的数量。
//栈为指定沿z轴的子分支的数量。
//glyCylinder绘制一个沿着Z轴定向的圆柱体。圆柱体的底部位于Z=0,顶部位于Z=高度。
//和球体一样,圆柱体围绕Z轴被细分为切片,沿着Z轴分为堆叠体。
//生成的法线都指向Z轴。
gluDeleteQuadric(Q);//释放二次方程对象
}
glPopMatrix();
glEndList();
return g;
}