美文网首页
opengl学习-面剔除

opengl学习-面剔除

作者: 小杰66 | 来源:发表于2021-04-24 08:36 被阅读0次

OpenGL能够检查所有面向观察者的面,并渲染它们,而丢弃那些背向的面,以节省片段着色器调用。我们要做的就是告诉OpenGL哪些是正向面哪些是背向面。

环绕顺序

当我们定义一组三角形顶点时,我们需要以特定的环绕顺序来定义它们,可能是顺时针或者逆时针。OpenGL在渲染图元的时候将使用这个信息来决定一个三角形是一个正向三角形还是背向三角形。默认情况下,逆时针顶点所定义的三角形将会被处理为正向三角形。

开启面剔除

glEnable(GL_CULL_FACE);

面剔除类型

glCullFace(GL_FRONT);

  • GL_BACK:只剔除背向面。
  • GL_FRONT:只剔除正向面。
  • GL_FRONT_AND_BACK:剔除正向面和背向面。

设置正向面

glFrontFace(GL_CCW);
GL_CCW 默认值 逆时针环绕顺序为正向面
GL_CW 顺时针环绕顺序为正向面

当逆时针顺序定义三角形顶点,然后设置顺时针环绕为正向面glEnable(GL_CULL_FACE);``glFrontFace(GL_CW);得到结果如下,只会绘制原本不应该看见的立方体内部。

image.png

相关文章

  • opengl学习-面剔除

    OpenGL能够检查所有面向观察者的面,并渲染它们,而丢弃那些背向的面,以节省片段着色器调用。我们要做的就是告诉O...

  • OpenGL学习18——面剔除

    面剔除(Face culling) OpenGL会检查所有面片,渲染那些面向视角的面片而丢弃那些背向的,减少片元着...

  • OpenGL ES for Android(面剔除)

    简介 首先我们绘制一个立方体,想象一下能看到几个面。一般情况下我们最多能看到三个面,极端的情况我们甚至只能看到一个...

  • OpenGL --面剔除和深度测试

    当我们以某一视角观察一个多面立体图形的时候,我们的肉眼只能看到一部分面积,也就是我们的视线正前方的面,例如观察一个...

  • 16.opengl高级-面剔除

    一、原理介绍 这一节比较简单,从相机方向看,一个3D形状的图形总有部分面是看不到的,这部分看不到的片元可以剔除掉,...

  • OpenGL:背面剔除和深度测试

    OpenGL:背面剔除和深度测试

  • OpenGL的2D游戏教程中为什么要开启面剔除?

    最近在学习OpenGL官方教程中的2D小游戏项目,发现官方在做2D游戏的时候居然开启了面剔除,让人非常费解,如下:...

  • 学习OpenGL ES之教你造一面镜子

    学习OpenGL ES之教你造一面镜子 学习OpenGL ES之教你造一面镜子

  • OpenGL-04.面剔除(Face culling)

    尝试在头脑中想象一下有一个3D立方体,你从任何一个方向去看它,最多可以同时看到多少个面。如果你的想象力不是过于丰富...

  • OpenGL深度测试

    在上一篇OpenGL正背面剔除中提到了正背面剔除的弊端:如果前后两个点都是正面或是背面,这时OpenGL无法区分哪...

网友评论

      本文标题:opengl学习-面剔除

      本文链接:https://www.haomeiwen.com/subject/hxvlrltx.html