OpengGL中图形绘制先后问题

OpengGL中图形绘制先后问题

  在opengl中,场景绘制总有个先后的顺序,也有个程序先后的问题,图形程序在前在后,对最终的图形的影响如何?

(1)设置图中的点(蓝色)与线条(浅蓝)z分量都是0,如果绘制折线条程序在前,绘制点程序在后,则效果图形如下:

  效果:点在线上

  

    glPointSize(4.0f); 
    glColor3f(0.0, 0.0, 1.0);
    glBegin(GL_POINTS); 
    for(int i = 0;i < ctrlVetP.size(); i++)  
    { 
        glVertex3f(ctrlVetP[i].x, ctrlVetP[i].y, 0);
    } 
    glEnd(); 

    glLineWidth(1.5f);
    glColor3f(0.0,1.0,1.0); 
    glBegin(GL_LINE_STRIP); 
    for(int i = 0;i < ctrlVetP.size(); i++)  
    { 
        glVertex3f(ctrlVetP[i].x, ctrlVetP[i].y, 0);
    } 
    glEnd(); 

(2)设置图中的点(蓝色)与线条(浅蓝)z分量都是0,如果绘制点程序在前,绘制折线条程序在后,则效果图形如下:

  效果:线在点之上

  

glLineWidth(1.5f);
    glColor3f(0.0,1.0,1.0); 
    glBegin(GL_LINE_STRIP); 
    for(int i = 0;i < ctrlVetP.size(); i++)  
    { 
        glVertex3f(ctrlVetP[i].x, ctrlVetP[i].y, 0);
    } 
    glEnd(); 

    glPointSize(4.0f); 
    glColor3f(0.0, 0.0, 1.0);
    glBegin(GL_POINTS); 
    for(int i = 0;i < ctrlVetP.size(); i++)  
    { 
        glVertex3f(ctrlVetP[i].x, ctrlVetP[i].y, 0);
    } 
    glEnd(); 

  总结:

  (可能)Opengl在绘制程序上,统一深度的图形先绘制的显示在最前面,(即离屏幕最近的位置)后绘制的,被前面的遮挡,采用“层次”,即后面的深度总是最大的,(因为深度越大,离屏幕距离越近)

  

原文地址:https://www.cnblogs.com/icmzn/p/5088431.html