作为一项家庭作业,我们正在编写一个软件光栅化程序。我已经注意到我的z缓冲区不能正常工作,所以我试图通过输出到屏幕来调试它。 (黑色近,白色远离)。在软件光栅化程序中实现z缓冲区
但是,我得到了每个顶点z的奇特值。这是我用来变换点:
float Camera::GetZToPoint(Vec3 a_Point)
{
Vec3 camera_new = (m_MatRotation * a_Point) - m_Position;
return (HALFSCREEN/tanf(_RadToDeg(60.f * 0.5f))/camera_new.z);
}
m_MatRotation
是一个3x3矩阵。将其乘以一个矢量将返回一个变换后的矢量。
我得到0和x之间的最大值和最小值,其中x是一个看似随机数。
我是否正在做这个转变的权利?如果是这样,我怎样才能正常化我的Z值,使它位于两个设定点之间?
在此先感谢。