【发布时间】:2014-10-03 14:44:17
【问题描述】:
我正在尝试使用 OpenGL 在白色背景上绘制一个红色球体。这是我的代码中应该绘制球体的部分。
部分主入口点:
initialise();
glutDisplayFunc(draw_Sphere);
glEnable(GL_DEPTH_TEST);
glutMainLoop();
初始化:
void initialise()
{
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
glDepthFunc(GL_LEQUAL);
glShadeModel(GL_SMOOTH);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
}
绘制球体:
void draw_Sphere()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(200, 200, 0);
glColor3f(1.0, 0.0, 0.0);
glPushMatrix();
glutSolidSphere(0.25, 20, 20);
glPopMatrix();
glutSwapBuffers();
}
我不知道出了什么问题,但这不会渲染球体(不过它会绘制白色背景)。有什么建议可以解决吗?
【问题讨论】:
-
一些想法:我看到你启用了 GL_LIGHTING 但我没有看到灯光设置。您在 X 和 Y 但不是 Z 中执行 glTranslatef:但我认为您希望 X 和 Y 为零,并且 Z 被平移,因为默认相机沿 Z 轴看。我忘记了 Z 应该是正数还是负数。接下来,无需围绕对 glutSolidSphere 的调用推送/弹出矩阵。使用默认的相机矩阵。我建议从一个正确设置的工作教程开始,然后将您的调用添加到 glutSolidSphere。试试nehe.gamedev.net/tutorial/lessons_01__05/22004