OPENGL绘图,颜色设置问题

hapure 2008-10-30 05:27:01
我用OPENGL绘制三个天体的关键代码如下,但是出来的结果怎么三个球体都是红色的啊?谁能
告诉我原因?

// 绘制红色的“太阳”
glColor3f(1.0f, 0.0f, 0.0f);
glutSolidSphere(69600000, 20, 20);
// 绘制蓝色的“地球”
glClearColor(0.0f, 0.0f, 1.0f,0.0f);
glColor3f(0.0f, 0.0f, 1.0f);
glRotatef(day/360.0*360.0, 0.0f, 0.0f, -1.0f);
glTranslatef(150000000, 0.0f, 0.0f);
glutSolidSphere(15945000, 20, 20);
// 绘制黄色的“月亮”
glColor3f(1.0f, 1.0f, 0.0f);
glRotatef(day/30.0*360.0 - day/360.0*360.0, 0.0f, 0.0f, -1.0f);
glTranslatef(38000000, 0.0f, 0.0f);
glutSolidSphere(4345000, 20, 20);
...全文
288 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cyrosly 2008-11-11
  • 打赏
  • 举报
回复
首先,就是球体,什么天体啊~~.其次看下面

glColor3f(1.0f, 0.0f, 0.0f);
glutSolidSphere(69600000, 20,20);
glClearColor(0.0f, 0.0f, 1.0f,0.0f); //这是没必要的,它的功能只是设置当前framebuffer的清除颜色(或者说是背景颜色)
,而不是要被绘制的几何体的颜色.如果你的背景在整个动画过程中保持不变则只在初始化时指定一次就可以了.
因为实际的清除操作是glClear(GL_COLOR_BUFFER_BIT)完成的
glColor3f(0.0f, 0.0f, 1.0f);
//glLoadIdentity();你可能需要各个球体的变换互不影响
glRotatef(day/360.0*360.0,0.0f,0.0f,-1.0f);
glTranslatef(150000000,0.0f,0.0f);
glutSolidSphere(15945000,20,20);
glColor3f(1.0f,1.0f, 0.0f);
//glLoadIdentity();
glRotatef(day/30.0*360.0-day/360.0*360.0,0.0f,0.0f,-1.0f);
glTranslatef(38000000,0.0f,0.0f);
glutSolidSphere(4345000,20,20);
mandarin 2008-11-04
  • 打赏
  • 举报
回复
帮顶,以前在学校的时候做过,现在全忘了

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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