c中的3d渲染:显示问题

时间:2017-12-15 16:09:38

标签: matrix graphics 3d

我试图在不使用openGL的情况下实现简单的3D渲染程序。我创建了矩阵结构,用于制作变换矩阵,视图矩阵和投影矩阵。然后,在应用viewProjectionMatrix获取网格的屏幕坐标之前,将此矩阵的乘积除以网格顶点的第四个分量(w = 1)到剪辑空间。

如果相机远离网格,看起来很好,但当我靠近网格时,我会得到类似的东西:

Picture of the problem

看起来每个不在视图空间中的顶点都显示在屏幕顶部。你知道是什么原因造成的吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您可能忘记实施近平面裁剪,这会忽略在相机前方小预定距离处穿过平面的任何几何体。这是为了阻止它们穿过透视奇点,这是摄像机的位置。任何穿过这个奇点的几何图形都会被透视投影反转。

(p.s。常用的裁剪算法是Sutherland-Hodgman