Back Face Culling for Line Loop

自作多情 提交于 2020-02-25 03:36:05

问题


I am using z-buffer to render my 3D triangular mesh. However, when I rendered the model as a wireframe mesh, I also saw the triangle faces which should have been hidden by the front face. So, I used the back face culling as follows:

            glEnable(GL_CULL_FACE);
            glCullFace(GL_BACK);
            drawWireFrame();
            glDisable(GL_CULL_FACE);

The drawWireFrame function is as follows:

void drawWireFrame()
{
    int i, j;
    glColor3d(1., 0., 0.);

    HE_edge *curr;

    for (int i = 0; i < he_f_count; i++)
    {
        glBegin(GL_LINE_LOOP);
        curr = m_HE_face[i].edge;
        glNormal3f(curr->prev->vert->vnx, curr->prev->vert->vny, curr->prev->vert->vnz);
        glVertex3f(curr->prev->vert->x, curr->prev->vert->y, curr->prev->vert->z);
        glNormal3f(curr->vert->vnx, curr->vert->vny, curr->vert->vnz);
        glVertex3f(curr->vert->x, curr->vert->y, curr->vert->z);
        glNormal3f(curr->next->vert->vnx, curr->next->vert->vny, curr->next->vert->vnz);
        glVertex3f(curr->next->vert->x, curr->next->vert->y, curr->next->vert->z);
        glEnd();
    }

}

However, I am still getting the same result I got before adding back face culling. Could you please help me identify what am I missing here.

Thank you.


回答1:


Lines don't have a front and a back face - lines don't have faces at all. Backface culling only works on primitive types which define faces, namely triangles (and traingle-bases primitives like strips and fans), and, for deprecated GL, also quad-based primtives and polygons.

If you want wireframe drawings of such primitives, you can directly draw them as triangles (or the other types) and set glPolygonMode(GL_FRONT_AND_BACK, GL_LINE) to get wireframe visualization. In that case, backface culling will have the desired effect. Also note that setting glPolygonMode is enough, so you don't need different drawing methods for wireframe and solid renderings.



来源:https://stackoverflow.com/questions/33710612/back-face-culling-for-line-loop

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!