用OpenGL中的函数glutSolidSphere画圆为何结果只显示了四分之一个圆?

代码贴出来#pragmacomment(linker,"/subsystem:\"windows\"/entry:\"mainCRTStartup\"")#include... 代码贴出来
#pragma comment( linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) #include<gl/glut.h>void Initial(){ //glEnable(GL_DEPTH_TEST);//启用深度测试,根据坐标的远近自动隐藏被遮住的图形 glClearColor(1.0f,1.0f,1.0f,0.0f);}void ChangeSize(int w,int h){ GLfloat aspect; aspect=(float)w/(float)h; glViewport(w/2,h/2,w,h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if(w<=h) { glOrtho(0.0f,500.0f,0.0f,500.0f*h/w,1.0f,-1.0f); } else { glOrtho(0.0f,500.0f*w/h,0.0f,500.0f,1.0f,-1.0f); } gluPerspective(90,aspect,1.0,5000000.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity();}void Display(){ glEnable(GL_DEPTH_TEST); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);//清除颜色缓冲以及深度缓冲 glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glColor3f(1.0f,0.0f,0.0f);//绘图色 //该函数用于渲染一个球体。球体球心位于原点,参数分别为: glutSolidSphere(50.0,90.0,90.0); //半径,以Z轴上线段为直径分布的圆周线的条数(将Z轴看成地球的地轴,类似于经线),围绕在Z轴周围的线的条数(类似于地球上纬线) glFlush();}void main(void){ glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE ); glutCreateWindow("球体"); glutReshapeFunc(ChangeSize); glutDisplayFunc(Display); Initial(); glutMainLoop();}

结果是这样:

新手。。。。。不大清楚,希望各路大神指教啊!
展开
 我来答
挚爱和你共亨
推荐于2016-03-18 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1.9万
采纳率:0%
帮助的人:1.2亿
展开全部
#pragma comment( linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
#include<gl/glut.h>

void Initial()
{
//glEnable(GL_DEPTH_TEST);//启用深度测试,根据坐标的远近自动隐藏被遮住的图形
glClearColor(1.0f,1.0f,1.0f,0.0f);
}
void ChangeSize(int w,int h)
{
GLfloat aspect;
aspect=(float)w/(float)h;
glViewport(w/2,h/2,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
{
glOrtho(0.0f,500.0f,0.0f,500.0f*h/w,1.0f,-1.0f);

}
else
{
glOrtho(0.0f,500.0f*w/h,0.0f,500.0f,1.0f,-1.0f);

}
gluPerspective(90,aspect,1.0,5000000.0);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void Display()
{
glEnable(GL_DEPTH_TEST);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);//清除颜色缓冲以及深度缓冲
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(1.0f,0.0f,0.0f);//绘图色
//该函数用于渲染一个球体。球体球心位于原点,参数分别为:
glutSolidSphere(50.0,90.0,90.0);
//半径,以Z轴上线段为直径分布的圆周线的条数(将Z轴看成地球的地轴,类似于经线),围绕在Z轴周围的线的条数(类似于地球上纬线)
glFlush();

}

void main(void)
{

glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE );

glutCreateWindow("球体");
glutReshapeFunc(ChangeSize);
glutDisplayFunc(Display);
Initial();
glutMainLoop();
}

结果是这样:
希采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chq220
2014-10-24 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:95
采纳率:0%
帮助的人:107万
展开全部
注释掉glOrtho(0.0f,500.0f,0.0f,500.0f*h/w,1.0f,-1.0f)看下,似乎被这个函数截掉了
更多追问追答
追问

会更奇怪。。。。。

追答
改成glOrtho(-500.0f, 500.0f, -500.0f, 500.0f*h/w, 1.0f, -1.0f)呢?
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式