使用glutSolidSphere()看不到球体

时间:2014-10-02 17:27:08

标签: opengl glut glu

下面是我显示实心球体的代码。我用过ModelMatrix来显示。但我无法看到坚实的结果。是否应该添加投影等内容。但我目前没有必要进行预测。

    #include <stdlib.h>
    #include <GL/gl.h>
    #include <GL/glu.h>
    #include <GL/glut.h>
    #include<windows.h>
    static void Init() {
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    }


    static void display() {
      glMatrixMode(GL_MODELVIEW);
      glLoadIdentity();
        glColor3d(1,1,0);
      glutSolidSphere(3,4,4);
    }

    int main(int argc, char** argv) {

      glutInit(&argc,argv);
      glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH );
      glutInitWindowSize( 550, 550);
      glutInitWindowPosition( 50, 50);
      glutCreateWindow( "Balloon");

      glutDisplayFunc(display);
      Init();
      glutMainLoop();
      return 0;
    }

1 个答案:

答案 0 :(得分:2)

将模型视图矩阵设置为标识基本上将摄像机直接放在原点。您的球体同样在原点渲染,因此您的视点位于球体的中心。根据过滤的过滤方式,这可能会使您的球体不可见,因为您正在查看几何体的背面。

此外,通过不设置投影矩阵,您隐式使用默认投影,默认投影是在所有三个维度中限制在[-1,1]范围内的正交投影。由于你的球体半径为3,你的所有几何体都在投影平截头体之外,所以它被剔除了。

尝试使用gluLookAt定位相机及其所在的位置。我建议您使用gluLookAt将相机定位在0,0,1处查看原点,然后绘制半径为0.5的球体。这应该使它可见,因为你不再将球体的表面推到投影平截头体之外而且你不再在球体内。