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