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

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

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

上一篇 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

glEnableglFrontFace

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/.

时间: 2024-10-30 20:11:08

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

OpenGL ES 贴图图片是否有 Alpha 通道以及图片大小导致无法显示帖图的原因分析

OpenGL ES 贴图图片是否有 Alpha 通道以及图片大小导致无法显示帖图的原因分析 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 如下挖的坑,现在填一下! 1.Alpha通道的问题,在

android开发-新建一个android helloworld应用,但运行后只显示android几个字,不显示helloworld.

问题描述 新建一个android helloworld应用,但运行后只显示android几个字,不显示helloworld. 工程启动后,console显示以下报错信息 Android Launch! [2014-03-31 15:07:08 - firstapp] adb is running normally. [2014-03-31 15:07:08 - firstapp] Performing com.example.firstapp.MainActivity activity laun

第二章 你好三角形:一个OpenGL ES 2.0例子

介绍基本概念的OpenGL ES 2.0,我们首先从一个简单的例子.在这一章里,我们将展示什么是需要创建一个OpenGL ES 2.0一个三角形的项目..我们要编写的程序是最基本的例子,一个OpenGL ES 2.0应用程序,绘制几何.有数量的概念,我们将介绍在本章: 1.创建一个屏幕渲染表面与EGL. 2.加载片段着色器和定点. 3.创建程序的对象,附着顶点和片段着色器,连接程序对象. 4.设置窗口. 5.清除颜色缓冲. 6.渲染一个简单的例子. 7.使内容的颜色缓冲可见在EGL窗口表面. 事

Android开发 OpenGL ES绘制3D 图形实例详解_Android

OpenGL ES是 OpenGL三维图形API 的子集,针对手机.PDA和游戏主机等嵌入式设备而设计. Ophone目前支持OpenGL ES 1.0 ,OpenGL ES 1.0 是以 OpenGL 1.3 规范为基础的,OpenGL ES 1.1 是以 OpenGL 1.5 规范为基础的.本文主要介绍利用OpenGL ES绘制图形方面的基本步骤. 本文内容由三部分构成.首先通过EGL获得OpenGL ES的编程接口;其次介绍构建3D程序的基本概念;最后是一个应用程序示例. OpenGL E

从零开始学习OpenGL ES之六 – 纹理及纹理映射

转自:http://bbs.ityran.com/article-9-1.html [转载]从零开始学习OpenGL ES之六 – 纹理及纹理映射 2011-9-14 23:49| 发布者: Iven| 查看: 9206| 评论: 15 摘要: 图形图像, 编程,编程, OpenGL ES, 教程,OpenGL ES 3D 在OpenGL ES中另一种为多边形定义颜色创建材质的方法是将纹理映射到多边形.这是一种很实用的方法,它可以产生很漂亮的外观并节省大量的处理器时间.比如说,你想在游戏中造一个

一字一句都记录在豆瓣里一个无人知晓的帐号中

我是一年喜欢怀旧的老年人,一字一句都记录在豆瓣里一个无人知晓的帐号中.只因今天的怀念与这个行业有那么一丝关系,所以选择发在派代.怀旧,并不因为这个季节有杨树柳树的精子在漫天飞舞.只因某些事情某些人某些文字触动了我的神经. 4年前,我刚接触电子商务这个行业.在此之前,我不知道电子商务是个什么玩意儿,实习的时候,听一位同事说起过,电子商务一定会是未来的一个朝阳行业.当时只是认为他的傻逼病又犯了.(说"又"是因为他经常犯病且从不吃药的那种,估计挺特么穷吧) 后来正式找工作,来了派代.无数次茶

opengl es fbo-求一个opengl es 在android上用 FBO的demo

问题描述 求一个opengl es 在android上用 FBO的demo 如题,最近需要做这个项目,在网上找了很久也找不到es的FBO例子,困在这里好久了,请高人拉我一把! 我需要c++版本的 解决方案 http://www.cnblogs.com/mengdd/archive/2013/05/02/3055649.html 解决方案二: http://blog.sina.com.cn/s/blog_4062094e0100alvv.html 解决方案三: 找了一些看看有没有符合要求的 And

opengl sharpgl-怎样用SharpGL画一条弧线,并可以让一个物体沿着这条弧线运动?

问题描述 怎样用SharpGL画一条弧线,并可以让一个物体沿着这条弧线运动? 可以是直线插补,圆弧插补或者连续插补.可以多人回答哦!如果有懂二次几何体的朋友也可以赐教赐教,本人对二次几何体的定义和创建函数不明白,比如:GLUquadricObj *quadratic; quadratic=gluNewQuadric(); gluQuadricNormals(quadratic, GLU_SMOOTH); gluQuadricTexture(quadratic, GL_TRUE); 在SharpG

android opengl es总结

注:这篇里的视锥体相对好理解些,不过好像和老罗的也差不多. android opengl es总结(转) 时间:2013-10-25 作者: 屁屁孩 阅读次数:21 内容提示:统的一个免费二维和三维图形库. 为桌面版本OpenGL 的一个子集. OpenGL ES 定义了一个在移动平台上能够支持OpenGL最基本功能的精简标准,以适应如手机,PDA或其它消费者移动终端的显示系统. Khronos Group 定义和管理了OpenGL ES标准. OpenGL 与 OpenGL ES的关系 Ope