作爲一項家庭作業,我們正在編寫一個軟件光柵化程序。我已經注意到我的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值,使它位於兩個設定點之間?
在此先感謝。