OpenGL中二次方程圆柱体,球体的一些简单问题!

仗剑直行 2017-10-15 03:51:21
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;
}

以上是一制作一个球体的代码,在gluSphere这里我对第二个参数(.5)进行修改,那么程序运行出来的球体大小会发生变化。如下图所示

左图为半径为.5的图像,右图为半径为.6的图像。
但是!
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;
}

在这段制作圆柱体的代码中,无论对gluCylinder里的参数进行任何修改,原图都没有任何改变。
请问为什么?
小弟现在硕士在读,刚刚接触OpenGL,请大家赐教,小弟不胜感激!
...全文
646 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-10-16
  • 打赏
  • 举报
回复
偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译运行,直到定位到具体出错的位置。” 的方法解决的。
仗剑直行 2017-10-16
  • 打赏
  • 举报
回复
好的,谢谢大佬!
仗剑直行 2017-10-15
  • 打赏
  • 举报
回复
我发的图,对球体进行参数修改,图像发生了改变。 但是我对圆柱体就行参数修改,图像却没有任何区别。。。
赵4老师 2017-10-15
  • 打赏
  • 举报
回复
重建所有? 你看到的不是你改动的?

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧