OpenGL ES 如何能看到一个物体内部和象3dmax中能只显示网格线
上一篇 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_FRONT,GL_BACK, 和GL_FRONT_AND_BACK 可作为参数。初始值是 GL_BACK。 -
Specifies whether front- or back-facing facets are candidates for culling. Symbolic constants
GL_FRONT,GL_BACK, andGL_FRONT_AND_BACKare 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.
See Also
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/.
OpenGL ES 如何能看到一个物体内部和象3dmax中能只显示网格线的更多相关文章
- IOS 中openGL使用教程2(openGL ES 入门篇 | 绘制一个多边形)
在上一篇我们学习了如何搭建IOS下openGL的开发环境,接下来我们来学习如何绘制一个多边形. 在2.0之前,es的渲染采用的是固定管线,何为固定管线,就是一套固定的模板流程,局部坐标变换 -> ...
- OpenGL ES
前言 OpenGL ES是Khronos Group创建的一系列API中的一种(官方组织是:http://www.khronos.org/).在桌面计算机上有两套标准的 3DAPI:Direct3D和 ...
- OpenGL ES: (5) OpenGL的基本概念、OpenGL ES 在屏幕产生图片的过程、OpenGL管线(pipeline)
一. OpenGL的基本概念 OpenGL 的结构可以从逻辑上划分为下面 3 个部分: 图元(Primitives) 缓冲区(Buffers) 光栅化(Rasterize) 图元(Primitives ...
- EGL接口介绍-----Android OpenGL ES底层开发
引自:http://www.cnitblog.com/zouzheng/archive/2011/05/30/74326.html EGL 是 OpenGL ES 和底层 Native 平台视窗系统之 ...
- Android OpenGL ES(十二):三维坐标系及坐标变换初步 .
OpenGL ES图形库最终的结果是在二维平面上显示3D物体(常称作模型Model)这是因为目前的打部分显示器还只能显示二维图形.但我们在构造3D模型时必须要有空间现象能力,所有对模型的描述还是使用三 ...
- 【AR实验室】OpenGL ES绘制相机(OpenGL ES 1.0版本)
0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLA ...
- WebGL是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起
WebGL是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTM ...
- 短视频图像处理 OpenGL ES 实践
2017年,短视频正以其丰富的内容表现力和时间碎片化的特点,快速崛起,而短视频最具可玩性之处就在支持人脸识别的动态贴图和各种不同效果的美颜.滤镜等.那短视频动态贴纸.滤镜.美颜等功能究竟是如何实现的呢 ...
- OpenGL ES学习资料总结
从今年春节后开始学习OpenGL ES,发现网上资料很有限,而且良莠不齐,所以整理了一下我学习时用到的资料和一些心得. 1. OpenGL ES1.x参考资料 把NEHE的教程移植到了Android上 ...
随机推荐
- HDU2023-求平均成绩
描述: 假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,并输出各科成绩均大于等于平均成绩的学生数量. 输入数据有多个测试实例,每个测试 ...
- @Transactional失效的问题
spring事物配置一般没有问题, 优先检查mysql的引擎是否是innodb, 是的话检查包的扫描是否有问题. 我就是因为包的扫描导致@Transactional失效. 具体情况如下, 在sprin ...
- springmvc乱码问题
在web.xml中加入 <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter ...
- CodeIgniter中的session处理
在CI中你可以这样很简单地装载library: $this->load->library('newclass'); 注意系统中会有两个library目录,一个是system/ ...
- 技术不牛如何才拿到国内IT巨头的Offer
不久前,byvoid面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的羡慕敬仰.看看这些牛人,NOI金牌,开源社区名人,三年级开始写Basic...在跪拜之余我们不禁要想,和这些牛人比,作为绝大部分技 ...
- leetcode_question_70 Climbing Stairs
You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...
- Linux通过网卡驱动程序和版本号的信息
检查卡制造商和信号 查看基本信息:lspci 查看详情:lspci -vvv # 3小作文v 查看卡信息:lspci | grep Ethernet 查看网卡驱动 查看网卡驱动信息:lspci - ...
- Qt5官方demo分析集11——Qt Quick Particles Examples - Affectors
在这个系列中的所有文章都可以在这里查看http://blog.csdn.net/cloud_castle/article/category/2123873 接上文Qt5官方demo解析集10--Qt ...
- CSS3属性之border-radius
一.语法: 代码如下: border-radius : none | <length>{1,4} [/ <length>{1,4} ]? 二.取值: <length& ...
- C#基础面试
1. 简述Private.Protected.Public.Internal 等访问修饰符的访问权限问题 Private:私有成员,只有类的内部成员可以访问 Protected:保护成员,在类的内部和 ...