OpenGL 管道中的裁剪空间

发布于 2024-12-20 07:24:30 字数 73 浏览 1 评论 0原文

简单解释一下剪切和投影是如何工作的?它与归一化顶点和矩阵乘法有关,其中涉及将 x,y,z 除以第四个变量。我很难理解到底发生了什么。

How does clipping and projecting work in a simplified explanation? It has something to do with normalizing the vertices and matrix multiplication that involves dividing x,y,z by a 4th variable. I am having trouble understanding what actually happens.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

东京女 2024-12-27 07:24:30

它非常简单。
裁剪是表示图元(点、线或三角形)是否可见的过程。 (并且在 modelview* 投影矩阵变换之后完成)如果三角形部分可见,则三角形会被分割成更多适合平截头体的三角形。

裁剪完成后,我们需要标准化顶点x,y,z,w)坐标,以便将它们投影到屏幕(窗口坐标)。这称为透视除法:新坐标为x,y,z,1 = x/w, y/w, z/w, 1。窗口坐标取决于视口设置,并且转换非常简单。

window_x = viewport_x + vertex_x * half_viewport_width + half_viewport_width;
window_y = viewport_y + vertex_y * half_viewport_height + half_viewport_height;

Its pretty simple.
Clipping is process that says if primitive (point, line or triangle) is visible. (and is done after modelview* projection matrix transformation) if triangle is partially visible, triangle is split into more triangles that fit in frustum.

After clipping is done, we need to normalize vertex (x,y,z,w) coordinates in order to project them to screen (window coordinates). This is called perspective division: new coordinates is x,y,z,1 = x/w, y/w, z/w, 1. Windows coordinates are dependant on viewport settings, and transformation is very simple.

window_x = viewport_x + vertex_x * half_viewport_width + half_viewport_width;
window_y = viewport_y + vertex_y * half_viewport_height + half_viewport_height;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文