1. Pipeline.h
// 保存顶点ZBuffer
void Pipeline::saveVertexsZValue(const Vertex &v1, const Vertex &v2, const Vertex &v3, floats &vec)
{
vec.push_back(v1.position.z);
vec.push_back(v2.position.z);
vec.push_back(v3.position.z);
}
// 读取顶点ZBuffer
void Pipeline::loadVertexsZValue(Vertex &v1, Vertex &v2, Vertex &v3, const floats &vec)
{
v1.position.z = vec[0];
v2.position.z = vec[1];
v3.position.z = vec[2];
}
bool translate(Vertex &v1, Vertex &v2, Vertex &v3)
{
........
// 保存、传递Z值,以便后面Z深度判断
floats values;
saveVertexsZValue(v1, v2, v3, values);
proj2Viewport(v1);
proj2Viewport(v2);
proj2Viewport(v3);
loadVertexsZValue(v1, v2, v3, values);
........
}