LearnOpenGL(十八)之面剔除

一、面剔除

对于一个3D立方体,无论我们从哪个方向,最多只能同时看到3个面。如果我们能够以某种方式丢弃另外几个看不见的面,我们就能省下超过50%的片段着色器执行数!

这正是面剔除(Face Culling)所做的。OpenGL能够检查所有面向(Front Facing)观察者的面,并渲染它们,而丢弃那些背向(Back Facing)的面,节省我们很多的片段着色器调用(它们的开销很大!)。我们可以设置顶点数据的环绕顺序(Winding Order),来告诉OpenGL哪些面是正向面(Front Face),哪些面是背向面(Back Face)。

二、环绕顺序

当我们定义一组三角形顶点时,我们既可以用顺时针(Clockwise),也可以用逆时针(Counter-clockwise)的环绕顺序来定义它们。

OpenGL在渲染图元的时候将使用这个环绕顺序来决定一个三角形是一个正向三角形还是背向三角形。默认情况下,逆时针顶点所定义的三角形将会被处理为正向三角形。

当我们定义顶点顺序的时候,我们应该想象对应的三角形是面向我们的,所以我们定义的三角形从正面看去应该是逆时针的。实际的环绕顺序是在光栅化阶段进行的,也就是顶点着色器运行之后。这些顶点就是从观察者视角所见的了。

观察者所面向的所有三角形顶点就是我们所指定的正确环绕顺序了,而立方体另一面的三角形顶点则是以相反的环绕顺序所渲染的。这样的结果就是,我们所面向的三角形将会是正向三角形,而背面的三角形则是背向三角形。下面这张图显示了这个效果:

启用面剔除:

glEnable(GL_CULL_FACE);

从这一句代码之后,所有背向面都将被丢弃。目前我们在渲染片段的时候能够节省50%以上的性能,但注意这只对像立方体这样的封闭形状有效。当我们想要绘制上一节中的草时,我们必须要再次禁用面剔除,因为它们的正向面和背向面都应该是可见的。

我们可以调用 glCullFace 来决定剔除正向面还是背向面:

glCullFace(GL_FRONT);

glCullFace函数有三个可用的选项:

  • GL_BACK:只剔除背向面(默认)。
  • GL_FRONT:只剔除正向面。
  • GL_FRONT_AND_BACK:剔除正向面和背向面。

我们也可以调用 glFrontFace 来选择顺时针的面还是逆时针的面作为正向面:

glFrontFace(GL_CCW);

觉得有帮助的话,打赏一下呗。。

           

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/703858.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

揭秘未来工厂核心:智慧大屏引领可视化管理新潮流

在数字化浪潮席卷全球的今天,智慧工厂已不再是科幻小说中的概念,而是成为了现代工业发展的新引擎。 智慧工厂可视化大屏,不仅仅是一块显示屏,更是工厂运行的“大脑”。通过这块屏幕,我们可以实时掌握工厂的每一个角落、…

根据参考风格进行矢量图绘制

摘要 利用机器学习根据给定的文本描述生成图像的技术已经取得了显著的进步,例如CLIP图像-文本编码器模型的发布;然而,当前的方法缺乏对生成图像风格的艺术控制。我们提出了一种方法,用于为给定的文本描述生成指定风格的绘图&…

华焰天下晋升质量管理三大体系和产品3C认证实力级

华焰天下,作为业界领先的新能源灶具企业,一直以来都致力于追求卓越的质量管理和产品创新。近日,华焰天下成功晋升为质量管理三大体系先进管理,并成功获得了产品3C认证,这标志着我们在质量管理和产品安全方面迈出了坚实…

【文献阅读】李井林等2021ESG促企业绩效的机制研究——基于企业创新的视角

ESG促进企业绩效的机制 摘要 0.引言与文献综述 1.理论分析与研究假设 1.1企业ESG表现与企业绩效 假设1a:企业的环境表现对企业绩效存在正向影响效应。 假设1b:企业的社会表现对企业绩效存在正向影响效应。 假设1c:企业的公司治理表现对企业…

NGM-SLAM:首创融合神经辐射场子图的3DGS-SLAM,问鼎SOTA!

论文标题: NGM-SLAM: Gaussian Splatting SLAM with Radiance Field Submap 论文作者: Mingrui Li, Jingwei Huang, Lei Sun Aaron, Xuxiang Tian, Tianchen Deng, Hongyu Wang 导读: 3DGS技术因其性能卓越而备受关注,3DGS-SLA…

免费泛域名证书申请

通配符证书是一种 SSL/TLS 证书,可用于保护多个域(主机),由域名字段中的通配符 (*) 指示。 如果您有很多需要保护的域或子域,这会很有帮助,因为它可以节省您的时间和金钱。 本文将讨论通配符证书、它们的工…

RAW转换和图像编辑工具:Capture One 23 Pro (win/mac)中文专业版

Capture One 23是一款功能强大的桌面版照片编辑软件,由丹麦PHASE ONE飞思数码公司开发。 以下是该软件的一些主要特点: 强大的RAW处理功能:Capture One 23支持多种品牌的相机和镜头,提供了丰富的RAW处理工具,包括曝光、…

财务数据分析:财务报表指标中的奥秘

财务指标分析是基本面分析的核心,如果学会了分析的框架,就能看出很多别人看不出的东西。所以说,财务指标分析非常重要。财务分析主要可以分为成长能力、盈利能力、现金流量、偿债能力、营运能力、收益质量、资本结构这几个方面。本文主要围绕…

【前沿探索】|大模型在二进制安全领域中的应用

引言 随着“软件定义万物”的时代到来,软件在我们生活中扮演着不可或缺的角色。然而,不严格的软件设计、开发人员的能力限制,以及编程语言本身的不安全性,都可能导致软件出现缓冲区溢出、整型溢出、格式化字符串攻击等缺陷。这些…

ChatGPT4O:自然语言交互

ChatGPT 4O:引领自然语言处理的新纪元 一、技术细节与强大功能二、创新点与技术突破三、应用场景与商业化前景 在科技的浪潮中,自然语言处理(NLP)领域一直备受关注。最近,OpenAI公司发布了其最新的NLP模型——ChatGPT …

SSL证书对于网络安全的重要作用

SSL证书是一种数字证书,它通过加密技术确保了客户端(如浏览器)与服务器之间的数据传输安全。当一个网站安装了SSL证书后,用户在浏览器地址栏中可以观察到HTTPS(超文本传输安全协议)前缀和挂锁图标&#xff…

【C语言习题】6.逆序输出

文章目录 1.描述输入描述:输出描述:示例图: 2.解题思路3.具体代码4.代码讲解 1.描述 输入10个整数,要求按输入时的逆序把这10个数打印出来。逆序输出,就是按照输入相反的顺序打印这10个数。 输入描述: 一…