旋转时网格渲染问题

时间:2011-02-04 11:24:46

标签: rendering mesh

我成功加载了100000面的网格。它是斯坦福龙模型。它渲染得很完美,但旋转时我可以看到三角形。

例如。我看着龙面朝上,按下键盘上的右箭头将角度增加5度,并不总是,但大多数时候,我可以看到模型的三角形(如图所示)处于状态之间。如果我使用specialFunc使旋转不停止,它看起来像星际迷航的转运效果,实际上看起来很酷,但是当你试图制作一个游戏引擎......它不好

这就是绘制功能:

void draw(){
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glLoadIdentity();             

  gluLookAt(0 , 5, -40 , 0 , 5 , 0 , 0, 1 ,0);




  loadTexture l;
  GLuint image;
  l.loadFile("wall.jpg",image);

  glBegin(GL_QUADS);
  glTexCoord2f(0.0f, 0.0f);
  glVertex3f(-40, -40, 25);
  glTexCoord2f(0.0f, 1.0f);
  glVertex3f(-40, 40, 25);
  glTexCoord2f(1.0f, 1.0f);
  glVertex3f(40, 40, 25);
  glTexCoord2f(1.0f, 0.0f);
  glVertex3f(40, -40, 25);
  glEnd();

  glDeleteTextures(1, &image);

  l.loadFile("floor.jpg",image);

  glBegin(GL_QUADS);
  glTexCoord2f(0.0f, 0.0f);
  glVertex3f(-40, 0, -45);
  glTexCoord2f(0.0f, 1.0f);
  glVertex3f(-40, 0, 45);
  glTexCoord2f(1.0f, 1.0f);
  glVertex3f(40, 0, 45);
  glTexCoord2f(1.0f, 0.0f);
  glVertex3f(40, -0, -45);
  glEnd();

  glDeleteTextures(1, &image);

  glMaterialf (GL_FRONT, GL_SHININESS, 90.0);
  glRotatef(angle , 0, 1,0);
  glPushMatrix();

  glCallList(b);
  glPopMatrix();

  /*
  glTranslatef(-5, 0, 0);
  glRotatef(45, 0, 1,0);
  glPushMatrix();
  glCallList(b);
  glPopMatrix();
  */

  // swap buffers to display, since we're double buffered.

  glFlush();
  glutSwapBuffers();
}

和我做旋转的功能

void animate(int key, int w, int h){
    switch (key){
        case GLUT_KEY_RIGHT:
            angle = angle + 5;
            break;
        default:
            break;
    }
    glutPostRedisplay();
}

我现在正在google搜索近一周,我相信我没有做错任何事,但由于希腊语是我的主要语言,我可能会使用一些错误的关键字。

0 个答案:

没有答案