创建二次几何体的学习笔记
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);
这样就是一个可以变换的二次几何体~
理解啦~~
其中就是可以在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);
这样就是一个可以变换的二次几何体~
理解啦~~
相关文章推荐
- Jsp&Servelet 学习笔记-创建一个部署描述文件
- angularJS 学习笔记3 injector创建过程
- 设计模式学习笔记——创建模式
- JavaWeb学习笔记-spring-12-AOP-创建增强类(异常抛出增强)
- [struts2学习笔记] 第三节 创建struts 2 HelloWorld所需的六个步骤
- SOAP消息的创建,传递,处理的学习笔记
- 《Web编程入门经典》学习笔记 - Lesson01:创建结构化文档:XHTML简介、核心元素、属性组与基本文本格式
- 【Git学习笔记】给发布的版本创建标签
- Django学习笔记1-创建Django项目
- Activiti学习笔记一:创建数据库表
- Intra-mart 学习笔记 (三) 用eBuilder创建IM工程
- EF CodeFirst学习笔记003--如何创建表
- MFC学习笔记.day02-创建窗口全过程,MFC执行顺序,BUTTON控件,对象与窗口关系
- 【Ubuntu+OpenCV】HighGUI之trackbar(滑动条)的创建--学习笔记【2】
- [Android新手学习笔记01]-如何手动创建Activity
- SQL学习笔记--创建表、约束、修改表
- JavaScript 学习笔记 (1) - Object 及 Object 的创建
- iPhone开发学习笔记007——Xcode4.2下iPhone多视图开发(自已创建MainWindow.xib和不用MainWindow.xib两种实现)
- 对象的创建和使用 学习笔记
- [Redhat学习笔记]:软RAID创建的方式以及分析。(手把手教你做RAID)