openGL 有些三角网格显示不出来解决方法

openGL 有些三角网格显示不出来
同样的代码,有些三角形网可以看到,有些看不到,改成线框模式可以看到,面模式看不到
代码如下

m_disLst = glGenLists(1);

glNewList(m_disLst, GL_COMPILE);

glBegin(GL_TRIANGLES);
for(size_t i = 0; i < m_tris.size(); ++i)
{
glNormal3d(m_norms[m_tris[i]].x, m_norms[m_tris[i]].y, m_norms[m_tris[i]].z);
const ZzGePoint3d& pt = m_pts[m_tris[i]];
glVertex3d(pt.x, pt.y, pt.z);
}
glEnd();
glEndList();


线框和面模式这样切换的
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
------解决方案--------------------
一个面片应该有3个顶点/法线,你一个面片只提交一个顶点自然画不全
------解决方案--------------------
加 glPolygonOffset(1,1); 试一下。GL 对面和线的光栅化不完全一样,导致像素深度计算出现不规则误差。
------解决方案--------------------
把背面裁剪关了