为什么 glutWireCube() 不显示我的线立方体?

Why glutWireCube() does not display my wire cube?

我是 OpenGL 的新手,我读到 glutWireCube 绘制了一个线立方体。现在当我 运行 我的代码时它没有出现,我想知道它有什么作用?它绘制的是立方体还是我的代码哪里出错了?

  #include<GL/glut.h>
  GLdouble cubeSize= 10.0;
  //FUNCTIONS DECLARATIONS - PROTOTYPES
  void init(void);
  void display(void);

 int main(int argc, char ** argv){
 glutInit(&argc,argv);
 glutInitDisplayMode(GLUT_SINGLE |GLUT_RGBA);
 glutInitWindowPosition(100,100);
 glutInitWindowSize(500,500);
 glutCreateWindow("Wire Cube");
 init();
 glutDisplayFunc(display);

 glutMainLoop();
 }

//FUNCTIONS IMPLEMENTAION - DEFINITION

void init(void){
     glClearColor(0.0,0.0,1.0,0.0);
     glClear(GL_COLOR_BUFFER_BIT);
     }

void display(void){
     glBegin(GL_POLYGON);
     glutWireCube(5.0);
     glEnd();
     glFlush();
     }

不允许在 glBegin/glEnd 块内调用 glutWireCube。只有 glVertex 指定顶点和设置某些顶点属性的当前值的所有函数(如 glNormalglColor、...)可以在那里使用。

未指定 glutWireCube 的内部工作方式。它也可以使用即时模式,但在这种情况下,它将执行自己的 glBegin/glEnd 调用。

从概念上讲,尝试将立方体放入 GL_POLYGON 中也是行不通的。 GL_POLYGON用于绘制多边形,完全是不可能将整个立方体绘制为一个多边形。

此外,您没有设置任何 GL_MODELVIEWGL_PROJECTION 矩阵。这意味着您直接在剪辑 space 中绘制,而大小为 5 的 glutWireCube 将绘制一个完全位于视锥体之外的立方体,因此您什么也看不到。