文档章节

OpenGL ES 关键API小结(转)

来来叔叔
 来来叔叔
发布于 2017/08/04 23:57
字数 1046
阅读 8
收藏 0

精选30+云产品,助力企业轻松上云!>>>

 

OPenGL ES常用API:

 

glClearColor( 0.f, 0.f, 0.f, 1.f );  //  设置模式窗口的背景颜色,颜色采用的是RGBA值

glViewport( 0, 0, iScreenWidth, iScreenHeight );//设置视口的大小以及位置,

视口:也就是图形最终显示到屏幕的区域,前两个参数是视口的位置,后两个参数是视口的宽和长。

glMatrixMode( GL_PROJECTION );   //  设置矩阵模式为投影矩阵,之后的变换将影响投影矩阵。

OpenGL属于状态管理机制,比如:设置当前矩阵为投影矩阵过后,在没有重新调用glMatrixMode()之前,任何矩阵变换都将影响投影矩阵。

glFrustumf( -1.f, 1.f, -1.f, 1.f, 3.f, 1000.f ); //该函数创建一个透视投影矩阵,其中的参数定义了视景体,可以理解为用相机的时候,眼睛的可视范围。就像一个三棱锥,参数1、3、5和2、4、6分别定义了近裁面和远裁面的左下和右上的(x、y、z)坐标。

OpenGL 投影有两种模式,一种是透视投影,也就是通过上述函数创建一个三棱锥视景体,这种模式下观看三维模型是近大远小。另外一种模式是正交模式,视景体是一个平行六面体,离相机的距离不会影响物体的大小。

glMatrixMode( GL_MODELVIEW );   //设置当前矩阵为模式矩阵

glVertexpointer( 3, GL_BYTE, 0, vertices );   //指定从哪里存取空间坐标数据

OpenGL 一共有8个这样的函数可以存取不同的坐标数据:

glColorPointer();

glIndexPointer();

glNormalPointer();

glTexCoordPointer();等

glShadeModel( GL_FLAT );       //设置阴影模式为GL_FLAT,默认是GL_SMOOTH

阴影模式一共有两种,GL_SMOOTH和GL_FLAT,在有关照的情况下会有不同的效果。

glClear( GL_COLOR_BUFFER_BIT );   //清除颜色缓存

glLoadIdentity();         //设置当前矩阵为单位矩阵

 

OpenGL里面的位置大小都是用矩阵来表示的,比如:glScanf()放大或缩小,其实就是用一个矩阵去乘当前的矩阵,为了使变换不受当前矩阵的影响,所以把当前矩阵设置为单位矩阵。

glTranslatex(0, 0, -100 << 16 ); //将坐标向z轴负方向移动100

 

glColor4f( 1.f, 0.f, 0.f, 1.f );         设置颜色为红色

/* Scale the geometry */

glScalex( 15 << 16, 15 << 16, 15 << 16 ); //   将物体沿xyz者分别放大15倍

/* Draw the triangle */

glDrawElements( GL_TRIANGLES, 1 * 3, GL_UNSIGNED_BYTE, indices );      //绘制图形,GL_TRIANGLES说明要绘制的图形是三角形,3表示一共有三个定点,GL_UNSIGNED_BYTE表示indices存储的数据类型

A call to eglSwapBuffers() can then be made.

void glTranslatef(GLfloat x, GLfloat y, GLfloat z)

void glTranslatex(GLfixed x, GLfixed y, GLfixed z)

功能:沿x、y、z平移

void glScalef(GLfloat x, GLfloat y, GLfloat z)void glScalex(GLfixed x, GLfixed y, GLfixed z)

功能:在x、y、z轴进行缩放,参数x、y、z为你想要的大小。

void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)void glRotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z)

功能:沿x、y、z轴进行旋转。Angle表示将要旋转的角度。

void glClear(GLbitfield mask)

功能:用mask清除缓存可以有三种模式进行清除:GL_COLOR_BUFFER_BIT, GL_DEPTH_BUFFER_BIT, and GL_STENCIL_BUFFER_BIT.

void glClearDepthf(GLclampf depth)void glClearDepthx(GLclampx depth)

功能:设置深度缓存,参数为0到1,使用glClear清除缓存。3D场景OpenGL程序都使用深度缓存。它的排序决定那个物体先画。这样您就不会将一个圆形后面的正方形画到圆形上来。

void glClearColor(GLclampf red,    GLclampf green,    GLclampf blue,    GLclampf alpha) void glClearColorx(GLclampx red,    GLclampx green,    GLclampx blue,GLclampx alpha)

功能:用指定的颜色值(RGBA)清除颜色缓存

void glColorPointer(GLint size,    GLenum type,    GLsizei stride,const GLvoid * pointer) 功能:指定颜色的存储空间,size在OpenGL ES默认为4,表示(RGBA);type为pointer内容的类型;stride为数据在pointer内存中的偏移量;pointer为第一个元素的地址。

void glEnableClientState(GLenum array)void glDisableClientState(GLenum array) 功能:启用或者禁止array,array有:GL_COLOR_ARRAY, GL_MATRIX_INDEX_ARRAY_OES, GL_NORMAL_ARRAY, GL_POINT_SIZE_ARRAY_ARRAY_OES, GL_TEXTURE_COORD_ARRAY, GL_VERTEX_ARRAY, and GL_WEIGHT_ARRAY_OES。 void glDrawElements(GLenum mode,    GLsizei count,    GLenum type,    const GLvoid * indices)

功能:按照参数给定的值绘制图形,mode指定要绘制的类型:GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, and GL_TRIANGLES;count指定要绘制多少个;type指定indices为数组首地址。


来来叔叔
粉丝 1
博文 100
码字总数 55732
作品 0
广州
高级程序员
私信 提问
加载中
请先登录后再评论。
OpenGL学习随笔(二)-- 什么是OpenGL

一、简介 OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。该API由Khronos集团定义推广,Khronos是一个图形软硬件行业...

osc_mhxmyy0u
2018/03/01
19
0
OpenGL ES for Android 环境搭建

在Android上运行OpenGL ES程序需要用到GLSurfaceView控件,GLSurfaceView继承自SurfaceView并实现了GLThread,通过OpenGL ES进行绘制。 OpenGL ES1.0是基于OpenGL 1.3的,OpenGL ES1.1是基于...

osc_bdhojhcu
01/19
12
0
Android图形---OpenGL(二)

本文译自:http://developer.android.com/guide/topics/graphics/opengl.html OpenGL 包 一旦使用GLSurfaceView和GLSurfaceView.Renderer类给OpenGL建立了一个View容器,那么就可以开始使用以...

长平狐
2012/10/16
177
0
OpenGL与Direct3D

OpenGL(wiki chs)/ OpenGL ES(wiki chs)是跨平台的,OpenGL广泛用于PC平台(windows、Linux、Unix、Mac OS X),OpenGLES则用于移动端平台(Android、iOS),以C的方式提供API WebGL(w...

可可西
03/04
0
0
OpenGL ES Programming Guide for iOS 第二章

第二章 iOS上的OpenGL ES OpenGL ES提供程序接口原函数以透过图形加速硬件管线绘制。OpenGL消耗图形命令产生影像用以显示给用户,或进一步处理OpenGL ES以外的检索。 OpenGL ES规范明确声明了...

长平狐
2012/10/08
1.3K
0

没有更多内容

加载失败,请刷新页面

加载更多

CPU缓存和内存屏障

CPU性能优化手段 - 缓存 为了提高程序的运行性能, 现代CPU在很多方面对程序进行了优化 例如: CPU高速缓存, 尽可能的避免处理器访问主内存的时间开销, 处理器大多会利用缓存以提高性能 多级缓...

CodingDiary
2019/07/08
0
0
关于我及本号的一些说明

初次关注本号的读者可能比较想了解本号的一些情况,这里单独写篇文章详细介绍下本人及本公号。 本人是一名 JAVA 后台开发工程师,17年毕业于某 211 工程硕士,校招进入某股份制银行做后台开发...

gaiserchan
2019/02/22
0
0
卷积神经网络学习路线(十二)| 继往开来的DenseNet

前言 这是卷积的第十二篇文章,主要为大家介绍一下DenseNet,值得一提的是DenseNet的作者也是上一篇卷积神经网络学习路线(十一)| Stochastic Depth(随机深度网络)论文的作者,即清华的黄...

BBuf
01/10
0
0
Android Camera原理之camera provider启动

1.camera provider进程介绍: cameraserver 736 1 274664 69564 binder_thread_read f3de10cc S android.hardware.camera.provider@2.4-service 其中的pid是736,说明camera provider进程启动......

天王盖地虎626
17分钟前
20
0
Angular / RxJs我应该何时退订`Subscription` - Angular/RxJs When should I unsubscribe from `Subscription`

问题: When should I store the Subscription instances and invoke unsubscribe() during the NgOnDestroy life cycle and when can I simply ignore them? 在NgOnDestroy生命周期中,什么......

法国红酒甜
18分钟前
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部