Home › Forums › GAMES在线课程(现代计算机图形学入门)讨论区 › 关于作业2两个三角形重叠部分的Z-Buffer问题 › Reply To: 关于作业2两个三角形重叠部分的Z-Buffer问题
感谢解答。我的理解是之前做MVP变换时采用了-z的值,那么做视图变换时也应该采用顶点的-z
`
// 单位立方体的边长
float f1 = (50 – 0.1) / 2.0;
// 单位立方体的中心点的z值 反转后的 正值
float f2 = (50 + 0.1) / 2.0;
……
// 变换前的点(0,0) 变换后应该在(width/2,height/2) 的位置
//Viewport transformation
for (auto & vert : v)
{
vert.x() = 0.5*width*(vert.x()+1.0);
vert.y() = 0.5*height*(vert.y()+1.0);
// 因为之前为了方便计算z值,将z值设置成正值
// 而我们做MVP变换时,采用的是z值的负值
// 所以这里再做视口变换,应改回负值
vert.z() = -vert.z() * f1 + f2;
// vert.z() = vert.z() * f1 + f2;
}
`