void glVertexAttribPointer( GLuint index,
GLint size,
GLenum type,
GLboolean normalized,
GLsizei stride,
const GLvoid * pointer
);
功能:定义顶点属性数组
index:指定要修改的顶点属性的索引值
size:指定每个顶点属性的组件数量。必须为1、2、3或者4。初始值为4。(如position是由3个(x,y,z)组成,而颜色是4个(r,g,b,a))
type:指定数组中每个组件的数据类型。可用的符号常量有GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT,GL_UNSIGNED_SHORT, GL_FIXED, 和 GL_FLOAT,初始值为GL_FLOAT。
normalized:指定当被访问时,固定点数据值是否应该被归一化(GL_TRUE)或者直接转换为固定点值(GL_FALSE)。
stride:指定连续顶点属性之间的偏移量。如果为0,那么顶点属性会被理解为:它们是紧密排列在一起的。初始值为0。
stride指定了一个属性到下一个属性之间的步长。
pointer:指定一个指针,指向数组中第一个顶点属性的第一个组件。初始值为0。
void glEnableVertexAttribArray(GLuint index);
功能:使能顶点属性数组
void glDisableVertexAttribArray(GLuint index);
功能:禁用顶点属性数组
void glTexImage2D(
GLenum target,
GLint level,
GLint internalFormat,
GLsizei width,
GLsizei height,
GLint border,
GLenum format,
GLenum type,
const GLvoid * data
);
功能:指定二维纹理和立方体纹理
target:指定纹理单元的类型是哪一种,必须指定为 GL_TEXTURE_2D, GL_PROXY_TEXTURE_2D,
GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
GL_TEXTURE_CUBE_MAP_POSITIVE_Z, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, or GL_PROXY_TEXTURE_CUBE_MAP中的一个。二维纹理需要指定为GL_TEXTURE_2D
level:指定纹理单元的层次,非mipmap纹理level设置为0,mipmap纹理设置为纹理的层级
internalFormat:指定OpenGL是如何管理纹理单元中数据格式的。网络上很多解释说这个参数必须和后面的format参数一样,这个说法是不正确的
width:指定纹理单元的宽度
height:指定纹理单元的高度
border:指定纹理单元的边框,如果包含边框取值为1,不包含边框取值为0
format:指定data所指向的数据的格式
type:指定data所指向的数据的类型
data:实际指向的数据
void glActiveTexture (int texture)
功能:选择活动纹理单元
texture:指定哪一个纹理单元被置为活动状态
opengl es绘制方式:
非索引法: GLES20.glDrawArrays(GLES20.GL_POINTS, 0, vCount);
索引法 : GLES20.glDrawElements(GLES20.GL_POINTS, iCount, GLES20.GL_UNSIGNED_BYTE, mIndexBuffer);
GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
功能:提供绘制功能。当采用顶点数组方式绘制图形时,使用该函数。该函数根据顶点数组中的坐标数据和指定的模式,进行绘制
其中:
mode: 绘制方式,OpenGL2.0以后提供以下参数:
GL_POINTS、GL_LINES、GL_LINE_LOOP、GL_LINE_STRIP、GL_TRIANGLES、GL_TRIANGLE_STRIP、GL_TRIANGLE_FAN。
first:从数组缓存中的哪一位开始绘制,一般为0。
count:数组中顶点的数量
void glDrawElements((GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
功能: 图元绘制函数,从数组中获得数据渲染图元,glDrawElements函数能够通过较少的函数调用绘制多个几何图元,
可事先准备一系列分离的顶点、法线、颜色数组,只调用一次glDrawElements把这些数组定义成一个图元序列。
它将通过索引使用count个成序列的元素来创建一系列的几何图元
其中:
mode:指定待创建的图元类型和数组元素如何用来创建这些图元。指定绘制图元的类型,它应该是下列值之一,GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_TRIANGLE_STRIP,
GL_TRIANGLE_FAN, GL_TRIANGLES, GL_QUAD_STRIP, GL_QUADS, and GL_POLYGON.
count:为绘制图元的数量乘上一个图元的顶点数。
type: 为索引值的类型,只能是下列值之一:GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT, or GL_UNSIGNED_INT。
indices:指向索引存贮位置的指针,存储绘制顺序。
public void glClearColor(float red,float green,float blue,float alpha)
功能:指定颜色缓冲区的清理值
详细:glClearColor指明红、绿、蓝、alpha的值并通过glClear来清理颜色缓冲区,被glClearColor指明的值属于区间[0, 1]。
public void glClearDepthf(float depth)
功能:指明深度缓冲区的清理值。
详细:glClearDepth方法指明深度值,并通过glClear来清理深度缓冲区。glClearDepth指明的值属于区间[0, 1]。
参数:depth――指明深度缓冲区被清理时的深度值,初始值为1。
public void glClearStencil(int s)
功能:指明模板缓冲区的清理值。
详细:glClearStencil指明glClear清理模板缓冲区时的索引,s为2m-1,其中m是模板缓冲区中的bit数。
相关获取:glGetIntegerv方法,并以GL_STENCIL_BITS为参数。
参数:s――指明glClear清理模板缓冲区时的索引,初始值为0。
public void glClear(int mask)
功能:清理缓冲区,并设置为预设值。
详细:glClear设置窗口位面区的值,该值由glClearColor, glClearDepth 和 glClearStencil等方法设定。
像素所有权测试、裁剪测试、抖动、颜色缓冲区掩饰将影响glClear操作,裁剪盒绑定清理区域。Alpha功能、混合功能、逻辑操作、建模、纹理映射以及深度缓冲区会被glClear操作忽略。
mask――可取GL_COLOR_BUFFER_BIT, GL_DEPTH_BUFFER_BIT, GL_STENCIL_BUFFER_BIT,
以表明那个缓冲区需要清理。
GL_COLOR_BUFFER_BIT:表明颜色缓冲区。
GL_DEPTH_BUFFER_BIT:表明深度缓冲区。
GL_STENCIL_BUFFER_BIT:表明模型缓冲区。
public void glBlendFunc(int sfactor,int dfactor)
功能:指明像素算法。
详细:将引入的值与颜色缓冲中已有的值混合。使用glEnable方法与glDisable方法以GL_BLEND为参数,决定是否开启混合功能,初始关闭的。
参数:
sfactor
――指明源图元的红、绿、蓝、alpha的混合比例是怎样计算的。允许的符号符号常量有:
GL_ZERO, GL_ONE,GL_SRC_COLOR (仅1.1), GL_ONE_MINUS_SRC_COLOR (仅1.1), GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, 和 GL_SRC_ALPHA_SATURATE,初始值是GL_ONE。
dfactor
――指明目图元的红、绿、蓝、alpha的混合比例是怎样计算的。允许的符号符号常量有:
GL_ZERO, GL_ONE,GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_DST_COLOR (仅1.1),GL_ONE_MINUS_DST_COLOR (仅1.1), GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, 和 GL_ONE_MINUS_DST_ALPHA,初始值为GL_ZERO
GL_ZERO表示alpha取值为0
GL_ONE表示1
GL_DST_COLOR表示取目标区域的颜色值
GL_SRC_ALPHA表示取源区域的alpha值等等。
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
把渲染的图像叠加到目标区域,源的每一个像素的alpha都等于自己的alpha,目标的每一个像素的alpha等于1。这样叠加次数越多,叠加的图元的alpha越高,得到的结果就越亮。因此这种融合用于表达光亮效果。
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
把渲染的图像融合到目标区域。源的每一个像素的alpha都等于自己的alpha,目标的每一个像素的alpha等于1减去该位置源像素的alpha。因此不论叠加多少次,亮度不变。