zze*_*zef 4 c++ opengl graphics rendering clipping
我正在用 C++ 编写一个用于学习目的的软渲染器,但我已经遇到了一些障碍。我不知道我是否遗漏了什么,但我不确定何时执行剪辑。一些消息来源谈论它在应用透视投影矩阵之后但在透视分割之前(因此仍然在 3D 空间中)发生在剪辑空间中。其他来源谈到使用 Cohen-Sutherland 线裁剪算法等算法在 2D 空间(透视分割之后)执行它。如果我应该在 3D 空间中进行剪辑,那么深度缓冲区是否仅用于决定光栅化对象的顺序,还是必须在 2D 中进行剪辑,但还要防止 z 缓冲区中超出 -1 的点的光栅化?
基本上,关于这方面的信息不是很清楚,我实际上还没有看到如何在同构剪辑空间中实际剪辑。据说你应该这样做,但没有人展示如何。
在透视分割之前,根据其顶点 ( )的均质裁剪空间位置,图元被裁剪到视图体积。剪辑规则是:gl_Position
-w <= x, y, z <= w.
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅OpenGL 4.6 API Core Profile Specification - 13.7 Primitive Clipping