上一篇 OpenGL ES 正反面设置指令 中分析了正反面的判区方法,那么正反面有什么用呢?接下来我们就要引入一个叫做背面消除的概念。在3dmax中有个选项,当你用挤压修改器挤出一个中空的长方体时,在外面是看不到里面的,这时就可以使用背面消除,把看不到的面消掉,而且结合正反面设置,把原本对着观看者的面设成背面,就会被消除了,这时就只能看到远离观看者的面的在长方体内部的面儿了。

这就是房间要被观看到里面内容时的做法,也有一种叫天空...的方法,不太懂,没去研究。最终效果是有正对着观看者的墙不被渲染,实际观察发现,可能存在一面墙或两面墙被打掉的可能性。

下面就来看看这个神奇的方法,我也是用了好久,反复调测,才用明白和真正理解,另外还有一个与背面消除使能配合使用的 glCullFace 指令,它能设置是背面消除,还是正面消除,或者正、背面同时消除。

边翻译以下内容,边明白了另一个事情,在 3dmax 中是显示一个几何体的线框是可以的,那么在 OpenGL ES 中做起来也是很简单的,就是用到 glCullFace 指令,传递 GL_FRONT_AND_BACK 这个参数,这样就把正、反面都消除了,但仅消除面而已,任何一个三维体,都是通过点、面、线三者才绘制成的,如果点和线不绘制,就会漏光。

有了这些基础知识,我们就能明白了,面只是点和线内部的区域,仅这部分不被绘制而已。

实际的计算绘制过程,也应该是根据提供的顶点,算出两顶点之间的线,再根据一个三角形的三个顶点算出的三条件向中间面的区域进行插值计算得出相应片元的颜色,这就是栅格化操作吧,之前是看不明白的,这里确实让人毛塞顿开。


其实写博客的过程,也是一个思考、分析的过程。思想总是要表达出来,才能让自已清楚地知道哪里有偏差,才能找到问题,做进一步的加工处理和修正。

Name

glCullFace — 指定是否正面或背面可以被消除 specify whether front- or back-facing facets can be culled

C Specification

void glCullFace( GLenum mode);

Parameters

mode

指定是否正面或背面侯选用于消除。标识常量 GL_FRONTGL_BACK, 和 GL_FRONT_AND_BACK 可作为参数。初始值是 GL_BACK。

Specifies whether front- or back-facing facets are candidates for culling. Symbolic constants GL_FRONTGL_BACK, andGL_FRONT_AND_BACK are accepted. The initial value is GL_BACK.

描述 Description

glCullFace 指定在面消除启用时,是正面还是背面被消除(按 mode 指定)。要启用和禁用面消除,调用 glEnable 和 glDisable 指令并传 GL_CULL_FACE 参数。面包括三角形、四边形、多边形和长方形。

glFrontFace 指定顺时针面和逆时针面哪一个是正面哪一个是背面。参看 glFrontFace 。

glCullFace specifies whether front- or back-facing facets are culled (as specified by mode) when facet culling is enabled. Facet culling is initially disabled. To enable and disable facet culling, call the glEnable and glDisable commands with the argument GL_CULL_FACE. Facets include triangles, quadrilaterals, polygons, and rectangles.

glFrontFace specifies which of the clockwise and counterclockwise facets are front-facing and back-facing. See glFrontFace.

注意 Notes

如果 mode 是 GL_FRONT_AND_BACK ,就没有面被绘制了,但是其它图元如点和线仍被绘制。

If mode is GL_FRONT_AND_BACK, no facets are drawn, but other primitives such as points and lines are drawn.

错误信息 Errors

如果 mode 是一个不可接受的值,那么就会产生 GL_INVALID_ENUM 错误信息。

GL_INVALID_ENUM is generated if mode is not an accepted value.

Associated Gets

glIsEnabled with argument GL_CULL_FACE

glGet with argument GL_CULL_FACE_MODE

See Also

glEnable, glFrontFace

Copyright

Copyright © 1991-2006 Silicon Graphics, Inc. This document is licensed under the SGI Free Software B License. For details, seehttp://oss.sgi.com/projects/FreeB/.

转载于:https://www.cnblogs.com/riasky/p/3478484.html

OpenGL ES 如何能看到一个物体内部和象3dmax中能只显示网格线相关推荐

  1. python创建只包含一个元素的元组时_Python中声明只包含一个元素的元组数据方法...

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  2. 使用Android OpenGL ES 2.0绘图之一:搭建一个OpenGL ES环境

    传送门☞Android兵器谱☞转载请注明☞http://blog.csdn.net/leverage_1229 传送门☞系统架构设计☞转载请注明☞http://blog.csdn.net/levera ...

  3. OpenGL ES 2.0 总体概述

    文章目录 OpenGL ES 2.0 总体概述 1. OpenGL ES 的两个小伙伴 1.1 EGL 1.2 GLSL 2. 屏幕图片的本质和产生过程 3. OpenGL ES pipeline 3 ...

  4. OpenGL ES: (5) OpenGL的基本概念、OpenGL ES 在屏幕产生图片的过程、OpenGL管线(pipeline)...

    一. OpenGL的基本概念 OpenGL 的结构可以从逻辑上划分为下面 3 个部分: 图元(Primitives) 缓冲区(Buffers) 光栅化(Rasterize) 图元(Primitives ...

  5. OPENGL ES 2.0 知识串讲(1)――OPENGL ES 2.0 概括

    更多图形知识请关注我的公众号: 前言 电脑是做什么用的? 电脑又被称为计算机,那么最重要的工作就是计算.看过三体的同学都知道, 电脑中有无数纳米级别的计算单元,通过 0 和 1 的转换,完成加减乘除的 ...

  6. EGL接口介绍-----Android OpenGL ES底层开发

    引自:http://www.cnitblog.com/zouzheng/archive/2011/05/30/74326.html EGL 是 OpenGL ES 和底层 Native 平台视窗系统之 ...

  7. OpenGL ES SDK for Android - 4

    Integer Logic 该应用程序根据规则30使用OpenGL ES 3.0模拟细胞自动机现象. 它使用两个程序对象,这两个程序以乒乓方式使用两个纹理. 第一个程序将ping纹理(ping)作为输 ...

  8. 关于openGL, openGL ES, openVG及android中2D调用关系的报告

    关于openGL, openGL ES, openVG及android中2D调用关系的报告 http://blog.chinaunix.net/u3/99423/showart_2203591.htm ...

  9. Android项目开发教程之OpenGL ES

    视频课:[免费]跨平台APP JQuery Mobile开发-1-初探移动开发-张晨光的在线视频教程-CSDN程序员研修院 学习内容 OpenGL ES的基本概念 Android下3D开发的基本知识 ...

最新文章

  1. Jquery JQZoom Plugin 放大鏡效果 Two
  2. Python Numba实现GPU加速
  3. php点选按钮ajax,php – 在单选按钮上显示div中的数据单击ajax
  4. python编程题3
  5. Flume学习笔记(一)安装与简单使用
  6. Netty学习四:Channel
  7. bashsupport插件_如何用 bash-support 插件将 Vim 编辑器打造成编写 Bash 脚本的 IDE
  8. [Unity] 战斗系统学习 11:Buff 框架 1
  9. SharePoint咨询师之路:设计之前的那些事四:负载均衡 - web服务器
  10. TensorFlow HOWTO 4.2 多层感知机回归(时间序列)
  11. [测试模式]Setup方法的滥用
  12. Spring学习笔记17--在XML中使用SPEL
  13. java方法重载的好处_Java方法重载浅谈
  14. 计算机公式sin,三角函数计算公式大全
  15. Bootstrap如何设置table样式
  16. OpenEmu for mac(苹果系统原生游戏模拟软件)中文版
  17. H5网站接入Paypal支付接口
  18. 《从0开始做运营[张亮]》——读书笔记
  19. java通过反射调用有参数的方法
  20. 推送流程(极光推送)

热门文章

  1. phpstorm自动补全
  2. ios开发证书,描述文件,bundle ID的关系
  3. 分卷压缩并解压 (线上服务器如何把很大的数据拷贝到另外一台服务器上)
  4. shell的基础学习
  5. Could not set property 'xxx' of 'class 'xxx' with value 'xxx'
  6. ubunut 下关闭apache服务自动启动
  7. 新一代垃圾回收器ZGC的探索与实践
  8. 工程化专题之Maven(下)
  9. 10道关于Java泛型的面试题
  10. JVM:堆中对象的创建?定位?可达性?