OpenGL ES for Android

The GLSurfaceView is a special view which manages OpenGL surfaces for us and draws it into the Android view system.

GLSurfaceView还包括的功能:

(1) It provides a dedicated render thread for OpenGL so that the main thread is not stalled

(2) It supports continuous or on-demand rendering.

(3) It takes care of the screen setup for you using EGL, the interface between OpenGL and the underlying window system.

OpenGL中的一些术语

VBO:vertex buffer object,顶点数据

PBO:Pixel buffer object,像素数据,纹理传递

采用DMA技术,无需CPU介入

VAO:vertex array object

3.0版本以上才可使用

把对象信息直接存储在图形卡中,而不是在需要的时候传输到图形卡。

NDC:Normalized Device Coordinates

FBO:Frame Buffer Object

LOD:Level of details

LOD技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。

Color/Depth/Stencil Buffer

Scissor Box

Blending

MSAA/SSAA: Multisampling anti-aliasing/super sampling anti-aliasing

多重采样抗锯齿  超级采样抗锯齿

一般情况下MSAA比SSAA更有效,更节省资源

Vertex Shader

处理变换及光照

Fragment Shader

处理Texture Environment & Color Sum & Fog & Alpha Test

一些API

创建VBO

1,使用glGenBuffers()生成新缓存对象

在服务端创建缓存对象,并返回缓存对象的ID

2,使用glBindBuffer()绑定缓存对象

GL_ARRAY_BUFFER:任何顶点属性,如顶点坐标、纹理坐标、法线及颜色分量数组

GL_ELEMENT_BUFFER:顶点的索引数据

若为0,则关闭该数据

将缓存对象连接到相应的缓存上,同时根据target确定缓存对象最有效的位置。

3,使用glBufferData()将顶点数据拷贝到缓存对象中

将数据拷贝到缓存对象,无数据拷贝,根据size申请分配内存

glBufferSubData()

部分数据拷贝到混存对象

glDeleteBuffers()

删除缓存对象

修改缓存对象

(1)直接使用glBufferData()/glBufferSubData()

(2)将缓存对象映射到客户端内存,具体API有

glMapBuffer():将缓存对象绑定到客户端内存,成功则返回指向客户端内存的指针,否则返回NULL,会引起同步问题

glUnmapBuffer()

glGetUniformLocation()

http://ask.csdn.net/questions/11006

Shader与Program的区别与联系

Shader范围更大

OpenGL中,采用右手坐标系,且矩阵按照列优先存储

EGL

(1)EGLDisplay

调用eglGetDisplay();

(2)initialize egl

eglInitialize(display, &majorVersion, &minorVersion);

(3) get configs

eglGetConfigs(display, ...)

(4) choose config

eglChooseConfig()

(5) create a surface

eglCreateWindowSurface()

得到EGLSurface

(6) create gl context

eglCreateContext()

(7) make the context current

eglMakeCurrent()

(8) swap buffer

eglSwapBuffers(eglDisplay, eglSurface)

EGLSurface

EGLContext

EGLNativeWindow

你可能感兴趣的:(OpenGL ES for Android)