您的位置:首页 > 其它

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

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

其中就是可以在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);

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

理解啦~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: