OPenGL面剔除

为什么需要面剔除

一个封闭立方体,任何角度最多看到 3 个面,另外 3 个面永远看不到。如果不画它们,节省超过 50% 的片段着色器开销。

怎么判断正反面

通过顶点的连接顺序,定义能看到一个三角形时,它一定是正面朝向吗,opengl采用右手坐标系,因此定义的三角形应该是逆时针的,这个判断变化在光栅化之前,用的是屏幕空间的投影坐标。

同样的定义一段正面三角形1->2->3,是逆时针。在背面看按照123的顺序,是顺时针。因此被判定为背面。只需要定义一次顶点顺序,当三角形背对你时,它的屏幕空间环绕方向会自动翻转,GPU 自动把它识别为背面。

相关API

OpenGL Unity Shader
glEnable(GL_CULL_FACE) 默认就开启了
glCullFace(GL_BACK) Cull Back背面剔除(默认)
glCullFace(GL_FRONT) Cull Front正面剔除
glCullFace(GL_FRONT_AND_BACK) 没直接对应(相当于不画了)
glFrontFace(GL_CCW) 不需要手动设,Unity 按平台自动处理
不开启面剔除 Cull Off

默认值是GL_CCW,它代表逆时针,GL_CW代表顺时针顺序。

参考文章:面剔除 - LearnOpenGL-CNhttps://learnopengl-cn.readthedocs.io/zh/latest/04%20Advanced%20OpenGL/04%20Face%20culling/

相关推荐
郝学胜-神的一滴1 天前
[简化版 GAMES 104] 现代游戏引擎 06:从Tick时序到邮局模型,拆解确定性世界的底层密码
开发语言·c++·游戏引擎·图形渲染·软件开发·opengl
程序员老陆7 天前
OpenGL 在视频渲染里的角色:它到底加速了什么?
音视频·gpu·opengl
郝学胜-神的一滴8 天前
[简化版 GAMES 104] 现代游戏引擎 05:游戏引擎世界构建核心机制深度解析
c++·程序人生·unity·游戏引擎·计算机图形学·opengl
郝学胜-神的一滴12 天前
中级OpenGL教程 030:gl_FragCoord解锁区域渲染与深度可视化新姿势
c++·unity·游戏引擎·图形渲染·unreal engine·opengl
郝学胜_神的一滴12 天前
Horse3D 游戏引擎研发笔记(五):Ferghana 编辑器——从场景 JSON 到可交互视口
计算机图形学·opengl
一枚懒人18 天前
OpenGL 视频渲染导论:从图形管线到视频处理全览
程序员·opengl
郝学胜-神的一滴24 天前
中级OpenGL教程 026:Assimp库从编译到实战全攻略
c++·unity·游戏引擎·图形渲染·unreal engine·opengl
郝学胜_神的一滴1 个月前
中级OpenGL教程 024:Assimp模型加载之Mesh解码玄功
计算机图形学·opengl
郝学胜-神的一滴1 个月前
中级OpenGL教程 023:Assimp模型加载全解——从源码到架构的骈文探秘
c++·unity·游戏引擎·cmake·unreal engine·opengl