title: OpenGL strange Rendering behaviour (flickering faces)
body: <p><strong>PRE:</strong> I'm using Assimp (Open Asset Import) library to import a .3ds file. Meshes are rendered with normals and materials. Using Qt. Drivers up to date on all the computers we tried.</p>
  
  <p><strong>POST:</strong> When I rotate around the objects,using camera,I can see that some mesh' faces flickering.</p>
  
  <p>The same happens using Assimp' render() method (sample code downloaded from A. wsite).</p>
  
  <p>1)The strange thing is that it usually happens with small size .3ds,while never happens with big ones.</p>
  
  <p>2)If I am really close there are no artifacts.The furthest I am,the more artifacts I see.</p>
  
  <p>Is it a .3ds problem or mine?</p>
  
  <p>Example of big .3ds (20MB)
  <img src="https://i.stack.imgur.com/wStS7.jpg" alt="e"></p>
  
  <p>Example of small .3ds (3MB)
  <img src="https://i.stack.imgur.com/HKsxE.jpg" alt="enter image description here"></p>
  
  <p><em>I paste here my Draw() function</em> (uses glLists but i can't get rid of them):</p>
  
  <pre><code>void Preview::BuildObjectsLists(Scene *sc,GLenum mode){             
  QHash&lt;QString, SceneObject*&gt;&amp; hash=sc-&gt;getObj();
  int counter =0;
  
  for (QHash&lt;QString,SceneObject*&gt;::ConstIterator i = hash.begin();i!=hash.end();++i) {
      glNewList(index-counter, GL_COMPILE);                       
      Mesh* p = dynamic_cast&lt;Mesh*&gt;(i.value());
      if(p){
          Matrix4x4&amp; a=p-&gt;getTrasformation();
          a.transpose();
          if(mode==GL_SELECT){                                  
              glPushName(counter);
          }
          glPushMatrix();
          glMultMatrixf((float*) &amp;(a.values));
          applyMaterial(p-&gt;getMat());
          QList&lt;Face&gt;&amp; faccie=p-&gt;getFaces();
          int numerofacce=faccie.count();
          QList&lt;Vector3D&gt;&amp; normals =p-&gt;getNormals();
          bool hasNormals=(!(normals.isEmpty()));
          if(hasNormals)  glEnable(GL_LIGHTING);
          else glDisable(GL_LIGHTING);
          for (int t = 0; t &lt; numerofacce; ++t) {
              Face&amp; f = faccie[t];
              GLenum face_mode;
              Vector3D* lista=f.arrayVertici;
              int* listaNorm=f.normalIndex;
              switch(f.numVertici) {
              case 1:
                  face_mode = GL_POINTS;
                  glBegin(face_mode);
                  if(hasNormals)
                      glNormal3fv(&amp;((normals[listaNorm[0]]).pos[0]));
                  glVertex3fv(&amp;lista[0].pos[0]);
                  break;
              case 2:
                  face_mode = GL_LINES;
                  glBegin(face_mode);
                  if(hasNormals){
                      glNormal3fv(&amp;((normals[(f.normalIndex)[0]]).pos[0]));
                      glVertex3fv(&amp;lista[0].pos[0]);
                      glNormal3fv(&amp;((normals[(f.normalIndex)[1]]).pos[0]));
                      glVertex3fv(&amp;lista[1].pos[0]);
                  }
                  else{
                      glVertex3fv(&amp;lista[0].pos[0]);
                      glVertex3fv(&amp;lista[1].pos[0]);
                  }
                  break;
              case 3:
                  face_mode = GL_TRIANGLES;
                  glBegin(face_mode);
                  if(hasNormals){
                      glNormal3fv(&amp;normals[(f.normalIndex)[0]].pos[0]);
                      glVertex3fv(&amp;lista[0].pos[0]);
                      glNormal3fv(&amp;normals[(f.normalIndex)[1]].pos[0]);
                      glVertex3fv(&amp;lista[1].pos[0]);
                      glNormal3fv(&amp;normals[(f.normalIndex)[2]].pos[0]);
                      glVertex3fv(&amp;lista[2].pos[0]);
                  }
                  else{
                      glVertex3fv(&amp;lista[0].pos[0]);
                      glVertex3fv(&amp;lista[1].pos[0]);
                      glVertex3fv(&amp;lista[2].pos[0]);
                  }
                  break;
              default: face_mode = GL_POLYGON; break;
              }
              glEnd();
          }
          glPopMatrix();
      }
      if(mode==GL_SELECT) glPopName();
      glEndList();
      counter++;
  }
  
  }
  </code></pre>