首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >剪裁和裁剪有什么区别?

剪裁和裁剪有什么区别?
EN

Computer Graphics用户
提问于 2019-10-04 21:53:10
回答 1查看 4.8K关注 0票数 5

在一个关于OpenGL的教程中,提到了这两个词,不幸的是没有一个很好的解释。

为了找出答案,我读了三次这篇文章,但恐怕我是个太普通的人.我的理解是:

视频框是矩形的,摄像机不能拍摄完整的场景,所以相机的矩形视图之外的所有东西都是“剪切”或“剪裁”。

另一方面,“剔除”意味着在进一步的计算中,由于前景中的其他多边形,这些多边形被排除在无法看到的范围内。

我想这就是链接文章试图在摘要项目1和2中描述的。对吗?

我仍然不明白的是以下几点:

4.与裁剪相比,裁剪建立了最高的多边形。在电子游戏中,剪裁方法比裁剪技术使用得更多。

所以..。我有选择,是使用剔除还是剪裁?那我上面的理解是错的.?

5.当物体部分可见时,使用裁剪技术。利用裁剪技术,提高了视频质量,提高了帧速率。此外,裁剪还提高了演示速度。

我明白,当我不必浪费时间计算不需要的多边形时,框架值会增加(这适用于裁剪和剔除)。

但这如何提高视频质量呢?

为什么剪裁要这样做,而不是剔除呢?或者是真的?

EN

回答 1

Computer Graphics用户

回答已采纳

发布于 2019-10-05 00:07:46

当涉及到图形时,“剔除”这个词本身并不真正有一个定义或位置在管道中。这个术语有时用于原语,有时用于片段。它有时用于基于相对于摄像机的方向的人脸,有时用于基于各种参数的原语。因此,把“剔除”当作一件事情来谈论是没有用的,有很多东西叫做“剔除”。

相比之下,有关图形管道的“裁剪”几乎总是用于指原语的顶点在任何可编程阴影之后,但在栅格化之前会发生什么?。不同类型的原语发生不同的裁剪,但基本思想是将原语分割成一个或多个原语,这样所有的新原语都完全在剪辑空间卷内。

如果原语部分在剪辑空间边界之外,裁剪过程会创建一个或多个完全位于该边界内的新三角形。通过视口变换,剪辑空间边界定义了当前呈现状态下可见的所有内容,因此,如果某物位于剪辑空间边界之外,则不可见。嗯,在理论上;在实践中,有一些方法可以在视口之外画东西(点大小、线宽、多采样等等),但现在不用管这些了。

现在,本文描述了OpenGL和类似规范如何讨论呈现的抽象模型。硬件中实际发生的事情通常是另一回事。由于裁剪有可能从一个中生成许多原语(因此使管道阻塞了一点,因为它必须运行更多的栅格化周期),除非绝对必要,否则硬件倾向于避免执行实际的裁剪。因此,认为这是一个性能优化的概念并不是真的。

注意,一个完全在剪辑空间边界之外的原语被裁剪成虚无。这一特殊情况通常被称为“剔除”原语,这就是为什么有时在类似的地方使用这些术语的原因。点基元要么是光栅化的,要么是剔除的;它们从来没有经历过真正的剪裁(因为只有一个顶点)。但总的来说,将原语减少到剪辑空间边界内的原语被称为“裁剪”,而不是“剔除”。

裁剪还允许用户使用定义一些用户定义的裁剪参数,它根据前一个顶点处理阶段提供的值裁剪原语。您可以使用这些实现裁剪平面,以便在不可见平面的交叉口裁剪原语。一个原语的所有部分在平面的一边都是可见的,但在另一边却看不见。

在呈现API中被正式称为“剔除”的事物:

  • 脸剔除。根据三角形原语相对视口的缠绕顺序丢弃三角形原语。
  • 基于顶点的剔除(一种相对较新的功能),可以根据顶点处理参数剔除整个原语。

您正在讨论的这篇文章似乎主要将“剔除”与可见性剔除技术等同起来。这些计算是由用户代码实现的,用户代码根据对象是否可见而选择呈现或不呈现对象。它们可以从非常简单的结果剔除测试(即:询问对象是否接近可见区域)到复杂的BSP系统或门户可见性剔除(试图检测对象是否完全落后于静态几何)。但是这些并不是GPU渲染管道的一部分,即使GPU进程有时被用来进行这样的测试。

总的来说,这篇文章错得比正确的多,所以最好假装你从未读过它。

票数 5
EN
页面原文内容由Computer Graphics提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://computergraphics.stackexchange.com/questions/9214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档