【Android开发学习13】Android(安卓)OpenGL ES 3D空间与glDrawArrays
16lz
2022-07-07
1.四棱锥: 由4个三角形构成。
四方体: 由6个三角形构成。
难点:在构建3D空间的顶点坐标时,要让对象绕自身的轴旋转,必须让对象的中心坐标总是(0.0f,0.0f,0.0f),
并且三角形都是按逆时针次序绘制的。
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,数组中顶点的数量。
//绘制三角锥
for(int i=0; i<4; i++)
{
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, i*3, 3);
}
{
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, i*4, 4);
}
四方体: 由6个三角形构成。
难点:在构建3D空间的顶点坐标时,要让对象绕自身的轴旋转,必须让对象的中心坐标总是(0.0f,0.0f,0.0f),
并且三角形都是按逆时针次序绘制的。
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,数组中顶点的数量。
//绘制三角锥
for(int i=0; i<4; i++)
{
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, i*3, 3);
}
//绘制四方体
{
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, i*4, 4);
}
[附]构建顶点数组:
int one = 0x10000;// 四棱锥顶点数组:private IntBuffer triggerBuffer = IntBuffer.wrap(new int[]{0,one,0,-one,-one,0,one,-one,one,0,one,0,one,-one,one,one,-one,-one,0,one,0,one,-one,-one,-one,-one,-one,0,one,0,-one,-one,-one,-one,-one,one });// 四方体顶点数组:private IntBuffer quaterBuffer = IntBuffer.wrap(new int[]{one,one,-one,-one,one,-one,one,one,one,-one,one,one,one,-one,one,-one,-one,one,one,-one,-one,-one,-one,-one,one,one,one,-one,one,one,one,-one,one,-one,-one,one,one,-one,-one,-one,-one,-one,one,one,-one,-one,one,-one,-one,one,one,-one,one,-one,-one,-one,one,-one,-one,-one,one, one, -one,one, one, one,one, -one, -one,one, -one, one,});
更多相关文章
- 箭头函数的基础使用
- Android(安卓)matrix 控制图片的旋转、缩放、移动
- Android中dispatchDraw分析
- 锁屏界面
- android 3dmax
- Android中文API(144) —— JsonWriter
- android OpenGL ES2.0编程初学
- android和j2me之清屏(clearScreen)
- [置顶] android 图标的绘制