C++ 显示三维三角形的旋转

C++ 显示三维三角形的旋转,c++,opengl,glut,perspectivecamera,opengl-compat,C++,Opengl,Glut,Perspectivecamera,Opengl Compat,我试着展示一个相对于y轴旋转的三角形。但是我不能正确地展示它。我如何解决它?我的代码怎么了 初始化: 显示: void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glRotatef(0.0, 0.0f, 1.0f, 0.0f); glBegin(GL_TRIANGLES);

我试着展示一个相对于y轴旋转的三角形。但是我不能正确地展示它。我如何解决它?我的代码怎么了

初始化:

显示:

void display() {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    glRotatef(0.0, 0.0f, 1.0f, 0.0f);


    glBegin(GL_TRIANGLES);


    glVertex3f(20.0f, 10.0f, -10.0f);
    glVertex3f(50.0f, 15.0f, -20.0f);
    glVertex3f(32.0f, 30.0f, -10.0f);

    glEnd();

    glutSwapBuffers();
}
模型围绕(0,0,0)旋转。不要沿负z轴平移顶点,而是围绕(0,0,0)排列顶点,并在旋转模型后通过平移来平移模型。例如:

void display(){
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
glMatrixMode(GLU模型视图);
glLoadIdentity();
glTranslatef(0.0f,0.0f,-60.0f);
glRotatef(0.0,0.0f,1.0f,0.0f);
glBegin(GL_三角形);
glVertex3f(-15.0f,-10.0f,5.0f);
glVertex3f(15.0f,-5.0f,-5.0f);
glVertex3f(-3.0f、10.0f、5.0f);
格伦德();
glutSwapBuffers();
}
注意:必须确保模型位于透视投影的近平面和远平面之间。在本例中,近平面为30.0,远平面为90.0:

glFrustum(-30,30,-30,30,30,90);
所有不在近平面和远平面之间的几何体都将被剪裁

由于几何体不是闭合体积,我建议禁用面剔除:

glEnable(GL_CULL_面)

void display() {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    glRotatef(0.0, 0.0f, 1.0f, 0.0f);


    glBegin(GL_TRIANGLES);


    glVertex3f(20.0f, 10.0f, -10.0f);
    glVertex3f(50.0f, 15.0f, -20.0f);
    glVertex3f(32.0f, 30.0f, -10.0f);

    glEnd();

    glutSwapBuffers();
}