直接绘制一个物体两次分别以GL_FILL, GL_LINE会出现片段重叠现象,线框会断断续续的,这是由于片段深度浮点精度造成深度比较时出问题:
解决办法:
参考OpenGL programming guide 8th p164
Polygon Offset
先用面绘制一遍物体,后设置填充模式为线,再设置多边形偏移靠近观察点一些,再绘制一遍物体。
glm::vec4 Color(1.0, 0, 0, 1.0);
glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
glUniform4fv(renderTech.getUni("Color"), 1, &Color.x);
pObj->renderOBJ();
Color = glm::vec4(1.0,1.0, 0, 0);
glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
glEnable(GL_POLYGON_OFFSET_LINE);
glPolygonOffset(-1.0, -1.0); //****** move closer to camera
glUniform4fv(renderTech.getUni("Color"), 1, &Color.x );
pObj->renderOBJ();