OpenGL ES 正反面设置指令
在OpenGL ES 中,仅有一种表面网格表示方式,那就是三角形。
三角形的三个顶点,可以组几个面?有答 1 的没有?有!那就是还不懂OpenGL ES 的我。
事实上,一张纸是有正反面的,那么一个三角形也应该有两个面,那么在空间中,如何区分呢?那就是正反面。
那具体哪个是正面,哪个是反面呢,据说是默认逆时针是正面,顺时针是反面,不过到现在还没搞清楚,这个顺和逆是个怎么看法,我们只知道在两个轴组成的二维平面坐标系中的顺和逆。
有知道的朋友不妨给予指出,谢谢。
不过,从下面的官方资料中,不难看出,应该是空间三角形的顶点向窗口坐标系做投影,得到的投影点,在一个二维坐标系中,就可以按二维坐标系中的顺逆来考虑了。
先前,我一直考虑可能有个三维的知识点没有掌握,现在看来,还是要转成二维的来考虑。
在研究三维的过程中,很多问题都要结合着二维来考虑,就比较顺畅了。
上面说了,系统默认是逆时针是正面,那么顺时针就是反面了,如果想对调一下呢,那就得用下面的指令了 glFrontFace 。
Name
glFrontFace — 定义多边形的正面和背面 define front- and back-facing polygons
C Specification
void glFrontFace( |
GLenum mode) ; |
Parameters
-
mode
-
指定多边形正面的方向。可授受
GL_CW
和GL_CCW 两个参数。初始值是 GL_CCW。
-
Specifies the orientation of front-facing polygons.
GL_CW
andGL_CCW
are accepted. The initial value isGL_CCW
.
描述 Description
在一个完全由不透明的封闭表面组成的场景中,多边形的背面永远也看不到。忽略这些不可见的多边形对于提升图片的渲染速度有明显的好处。要启用或禁用多边形背面消除特性,可调用 glEnable 和 glDisable 并带参数 GL_CULL_FACE。
如果一个假想的对象沿着它的第一个顶点、第二个顶点......直到最后一个顶点这样的路径,最后返回到第一个顶点,它围绕多边形本身按顺时针方向移动的,那么这个多边形映射到窗口坐标系的投影可以说成具有顺时针绕向。如果按同样的路径是以反时针方向绕多边形自身移动的,那么多边形的绕向就说成是反时针绕向。glFrontFace指定多边形在窗口坐标系中是顺时针绕向或反时针绕向作为正面;GL_CW 选择顺时针多边形作为正面。默认,反时针多边形被当作正面。
In a scene composed entirely of opaque closed surfaces, back-facing polygons are never visible. Eliminating these invisible polygons has the obvious benefit of speeding up the rendering of the image. To enable and disable elimination of back-facing polygons, call glEnable and glDisable with argument GL_CULL_FACE
.
The projection of a polygon to window coordinates is said to have clockwise winding if an imaginary object following the path from its first vertex, its second vertex, and so on, to its last vertex, and finally back to its first vertex, moves in a clockwise direction about the interior of the polygon. The polygon's winding is said to be counterclockwise if the imaginary object following the same path moves in a counterclockwise direction about the interior of the polygon. glFrontFace
specifies whether polygons with clockwise winding in window coordinates, or counterclockwise winding in window coordinates, are taken to be front-facing. Passing GL_CCW
to mode
selects counterclockwise polygons as front-facing; GL_CW
selects clockwise polygons as front-facing. By default, counterclockwise polygons are taken to be front-facing.
错误信息 Errors
如果 mode 不是可接受的值,就会产生 GL_INVALID_ENUM 错误。
GL_INVALID_ENUM
is generated if mode
is not an accepted value.
Associated Gets
glGet with argument GL_FRONT_FACE
See Also
Copyright
Copyright © 1991-2006 Silicon Graphics, Inc. This document is licensed under the SGI Free Software B License. For details, see http://oss.sgi.com/projects/FreeB/.
OpenGL ES 正反面设置指令的更多相关文章
- OpenGL ES 如何能看到一个物体内部和象3dmax中能只显示网格线
上一篇 OpenGL ES 正反面设置指令 中分析了正反面的判区方法,那么正反面有什么用呢?接下来我们就要引入一个叫做背面消除的概念.在3dmax中有个选项,当你用挤压修改器挤出一个中空的长方体时,在 ...
- OpenGL ES 简单教程
什么是OpenGL ES? OpenGL ES (为OpenGL for Embedded System的缩写) 为适用于嵌入式系统的一个免费二维和三维图形库. 为桌面版本号OpenGL 的一个子集. ...
- 3D OpenGL ES
什么是OpenGL ES? OpenGL ES (为OpenGL for Embedded System的缩写) 为适用于嵌入式系统的一个免费二维和三维图形库. 为桌面版本OpenGL 的一个子集. ...
- OpenGL ES: (5) OpenGL的基本概念、OpenGL ES 在屏幕产生图片的过程、OpenGL管线(pipeline)
一. OpenGL的基本概念 OpenGL 的结构可以从逻辑上划分为下面 3 个部分: 图元(Primitives) 缓冲区(Buffers) 光栅化(Rasterize) 图元(Primitives ...
- Android OpenGL ES(十三)通用的矩阵变换指令 .
Android OpenGL ES 对于不同坐标系下坐标变换,大都使用矩阵运算的方法来定义和实现的.这里介绍对应指定的坐标系(比如viewmodel, projection或是viewport) An ...
- WebGL 在 OpenGL ES 指令 iOS 在 C 分歧版指令分析
WebGL 中 OpenGL ES 指令与 iOS 中 C 版指令的差异简析 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途 ...
- VMware Workstation 12 OpenGL ES版本支持情况与设置
概述 开始学习Opengl时,发现VMware Workstation虚拟机无法运行Opengl ES2.0的程序.后来,经过查找最终得知,是因为VMware Workstation11及之前的版本对 ...
- Android OpenGL ES 开发教程 从入门到精通
感谢,摘自:http://blog.csdn.net/mapdigit/article/details/7526556 Android OpenGL ES 简明开发教程 Android OpenGL ...
- Android OpenGL ES(五)GLSurfaceView .
Android OpenGL ES 相关的包主要定义在 javax.microedition.khronos.opengles GL 绘图指令 javax.microedition.khrono ...
随机推荐
- Qt中如果通过QStyle自定义能够跨平台的界面控件
我们经常会碰到需要定制界面控件的要求.如果只是在一个平台上,比如说你的控件只需要在Windows上显示,那很好办,Hard code 你的look and feel就可以了.但是如果界面需要在不同平台 ...
- Socket编程指南及示例程序
例子代码就在我的博客中,包括六个UDP和TCP发送接受的cpp文件,一个基于MFC的局域网聊天小工具工程,和此小工具的所有运行时库.资源和执行程序.代码的压缩包位置是http://www.blogja ...
- Struts 和Spring的核心控制器
Struts 核心控制器是FilterDispatch Spring核心控制器是DispatchServlet
- android 数据持久化——I/O操作
上一节中简单的介绍了File的操作,这一节来说说使用android平台自带对象实现文件的基本操作 主要的两个类:openFileOutput(写)和openFileInput(读) 向文件中写如数据代 ...
- 自己定义标签中tagsupport的一些方法
TagSupport生命周期 TagSupport类分别实现了Tag与IterationTag界面,其预设的回传值是:doStartTag()回传 SKIP_BODY.EVAL_BODY_INCLUD ...
- android之PackageManager简单介绍
PackageManager相关 本类API是对全部基于载入信息的数据结构的封装,包含下面功能: 安装,卸载应用查询permission相关信息 查询Application相关信息(applicati ...
- java concurrent之前戏synchronized
对于多线程共享资源的情况须要进行同步,以避免一个线程的修改被还有一个线程的修改所覆盖. 最普遍的同步方式就是synchronized. 把代码声明为synchronized.有两个重要后果,一般是指该 ...
- SQL Server索引进阶:第五级,包含列
原文地址: Stairway to SQL Server Indexes: Level 5, Included Columns 本文是SQL Server索引进阶系列(Stairway to SQL ...
- DEV GridControl 小结(持续添加)
一.属性: 1.Views OptionsBehavior=>Editable:False 列表不可编辑 OptionsSelection=>EnableAppearanceFocuse ...
- JavaSE复习日记 : 条件判断语句
/* 条件控制语句:if(){}else{} 语法: 第一种结构:有不执行的情况 if(boolean表达式){ //第一位真,就执行里面的语句,为假就不执行 java语句; } 第二种结构: if( ...