OpenGL ES 使用顶点索引绘制立方体
2015-08-13 09:59
387 查看
1、新建 MyCubeRenderer.java
2、修改 BufferUtil.java 文件
添加方法
3、立方体顶点图
4、运行效果
/* * 立方体 */ public class MyCubeRenderer extends MyAbstractRenderer{ public void onSurfaceCreated(GL10 gl, EGLConfig arg1) { //设置清屏色(背景) gl.glClearColor(0, 0, 0, 1); //启用顶点缓冲区 gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); } protected void drawBefore(GL10 gl) { gl.glClear(GL10.GL_COLOR_BUFFER_BIT); } protected void draw(GL10 gl) { float r =0.3f; //八个顶点的坐标 //以立方体的中心点为(0,0,0) 点 float pos[] ={ -r ,-r ,r , r ,-r ,r , r , r ,r , -r , r ,r , -r ,-r ,-r , r ,-r ,-r , r , r ,-r , -r , r ,-r , }; //绘制 点得索引 byte index[]={ 0,4,7,3, 7,6,2, 6,5,1, 5,4,0, 3,2,1,0 }; gl.glVertexPointer(3, GL10.GL_FLOAT, 0, BufferUtil.arr2ByteBuffer(pos)); //使用索引画图 gl.glDrawElements(GL10.GL_LINE_STRIP, index.length, GL10.GL_UNSIGNED_BYTE, BufferUtil.arr2ByteBuffer(index)); } }
2、修改 BufferUtil.java 文件
添加方法
public static ByteBuffer arr2ByteBuffer(byte[] arr){ //分配字节缓冲区空间,存放顶点坐标 ByteBuffer ibb=ByteBuffer.allocateDirect(arr.length); //设置顺序(本地数据) ibb.order(ByteOrder.nativeOrder()); //放置顶点坐标数组 ibb.put(arr); //定位指针位置,从该位置开始读取顶点数据 ibb.position(0); return ibb; }
3、立方体顶点图
4、运行效果
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories