创建二次几何体的学习笔记

来源:互联网 发布:于正 琼瑶 知乎 编辑:程序博客网 时间:2024/04/28 08:32

单独创建二次几何体并不是一件很难的事情,但是在一个工程里面把这些几何体利用变换的形式一起显示出来就没有那么容易了。

其中就是可以在int DrawGLScene(GLvoid) 这个函数里面直接利用switch()对不同的几何体进行选择。以下是nehe教程里面的函数



switch(object)
{
case 0:
glDrawCube();   //绘制立方体
break;
case 1:
glTranslatef(0.0f,0.0f,-1.5f);//绘制圆环 // Center The Cylinder
gluCylinder(quadratic,1.0f,1.0f,3.0f,32,32);// A Cylinder With A Radius Of 0.5 And A Height Of 2
break;
case 2:
gluDisk(quadratic,0.5f,1.5f,32,32);//绘制圆盘 // Draw A Disc (CD Shape) With An Inner Radius Of 0.5, And An Outer Radius Of 2.  Plus A Lot Of Segments ;)
break;
case 3:
gluSphere(quadratic,1.3f,32,32); //绘制实心球体// Draw A Sphere With A Radius Of 1 And 16 Longitude And 16 Latitude Segments
break;
case 4:
glTranslatef(0.0f,0.0f,-1.5f);//绘制圆锥 // Center The Cone
gluCylinder(quadratic,1.0f,0.0f,3.0f,32,32);// A Cone With A Bottom Radius Of .5 And A Height Of 2
break;
case 5:         //动态产生圆盘
part1+=p1;  //part1圆盘的开始角度
part2+=p2;  //part2圆盘的结束角度


if(part1>359) // 360 Degrees
{
p1=0;
part1=0;
p2=1;
part2=0;
}
if(part2>359) // 360 Degrees
{
p1=1;
p2=0;
}
gluPartialDisk(quadratic,0.5f,1.5f,32,32,part1,part2-part1);// A Disk Like The One Before
break;
};

然后用空格键控制几何体的变换 if (keys[' '] && !sp)
{
sp=TRUE;
object++;
if(object>5)
object=0;
}
if (!keys[' '])
{
sp=FALSE;
}

另外,在初始化的函数里面需要有一个指针

       quadratic=gluNewQuadric();   
gluQuadricNormals(quadratic, GLU_SMOOTH);  
gluQuadricTexture(quadratic, GL_TRUE);

这样就是一个可以变换的二次几何体~

理解啦~~