我绘制了一个线框型不规则球体,现在希望显示的时候将后面的线框隐藏起来。本人初学,希望高手指点。
目前绘图代码如下:
         glClearColor(0.8f, 0.8f, 0.8f, 0.8f);
glClearDepth(1.0f);                                         
glShadeModel(GL_SMOOTH);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear (GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
         glEnable(GL_DEPTH_TEST);                                    
glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse);
glLightfv(GL_LIGHT0,GL_SPECULAR,LightDiffuse);              
glLightModelfv(GL_LIGHT_MODEL_AMBIENT,lmodel);
glLightfv(GL_LIGHT1, GL_POSITION,LightPosition);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT1);                                        
glEnable(GL_NORMALIZE);
glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
glBlendFunc(GL_ONE_MINUS_SRC_COLOR,GL_SRC_COLOR);
glEnable(GL_BLEND);
                                    
         /*其他绘图代码*/
        
glDisable(GL_BLEND);
rotate();                             //旋转
DrawCurve();                          //绘制曲面
glFlush();
::SwapBuffers(m_pDC->GetSafeHdc()); //交互缓冲区

解决方案 »

  1.   

    DrawCurve(),这个函数是画图的具体函数。现在画出来的是线框型的,我希望显示的时候只看到前面的框子,不要看见那些不该看到的。想问下该怎么办?
    我看网上有贴说应该关闭光源,开深度测试,但是没有效果。
      

  2.   

    glShadeModel(GL_FLAT);   
          glDepthFunc(GL_LESS);   
          glEnable(GL_DEPTH_TEST);
      

  3.   

    你加在rotate前面看看,我觉的,你里面好多语句可能都是不要的!建议你精简一下代码!
      

  4.   

    glDepthFunc(GL_LEQUAL);
    glEnable(GL_DEPTH_TEST);
       //具体的显示在这儿加
    glDisable(GL_DEPTH_TEST);