openGL之API学习(五十三)前面剔除、背面剔除、片段擦除

本文介绍了OpenGL中的片段擦除、前面剔除和背面剔除技术,用于优化渲染性能。背面剔除通过判断顶点绕序决定面片是否可见,启用剔除功能可以减少计算量。默认情况下,逆时针绕序被认为是正面。启用剔除通过glEnable(GL_CULL_FACE),并使用glCullFace选择剔除正面、背面或两者。在某些特定场景如非封闭几何对象渲染时,是否启用背面剔除需视情况而定。背面剔除在光栅化阶段执行,位于顶点着色器和片段着色器之间。
摘要由CSDN通过智能技术生成

片段的擦除(discarding fragments)和前面剪裁、后面剪裁(front face culling and back face culling)

前面剔除、背面剔除

由于这种绘制方法好像两个面都绘制成一模一样(当然实际只绘制一个面,也只可能看到一个面),所以又成为双面渲染。

背面剔除

 

使用背面剔除来减少需要绘制的三角形数量

背面剔除,顾名思义,就是在渲染的时候,将背对着观察者的面片丢弃,只将正面朝向观察者(观察者能看到的)面片进行计算。

OpenGL在渲染的时候如果看到这个面的顶点绕序不是正面绕序,那就判定其实背面,把它丢弃。

顶点绕序有两种:顺时针和逆时针。如下图,左边的就是顺时针绕序,右边的就是逆时针绕序:

 

顶点绕序

每个三角形图元的三个顶点都构成了一个顶点绕序。在渲染的时候,OpenGL会用这些信息来判断这是正面还是背面。默认情况下,顶点是逆时针顺序的会被认为是正面。

D3D中默认顶点以顺时针方向(在观察坐标系中)形成的三角形为正面,以逆时针方向形成的三角形为背面。

如何启用背面剔除

glEnable函数,传入的参数是GL_CULL_FACE

OpenGL还提供了一些控制背面剔除效果的函数,甚至连前面也可以剔除掉。调用glCullFace(GL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值