OpenGL ES 绘制圆环
来源:互联网 发布:360强力卸载软件 编辑:程序博客网 时间:2024/04/30 15:33
1、新建 MyRingRenderer.h
/* * 圆环 */public class MyRingRenderer extends MyAbstractRenderer {private float r_inner =0.2f; //内环 半径private float r_ring =0.3f; //圆环 环半径 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) {int ringCount =20;//把圆环 切成20块int blockCount =20;//把圆 切成20块float alpha =0;float beta =0;float alphaStep =(float) ((2*Math.PI) /ringCount);float betaStep =(float) ((2*Math.PI) /blockCount);List<Float> pos =new ArrayList<Float>();for(int i =0;i <ringCount;i++){//一次画两个相邻的圆alpha =i *alphaStep;for(int j =0; j <blockCount; j++){beta =j *betaStep;// z值为0的 以(0,0)点线段长度float lineD =(float) (r_inner +r_ring +r_ring *Math.cos(beta));// 投影到 x,y轴float x0 =(float) (Math.cos(alpha) *lineD);float y0 =(float) (Math.sin(alpha) *lineD);//由于 z轴靠近人的为正方向 +Math.PIfloat z0 =(float) (Math.sin(beta +Math.PI) *r_ring);float x1 =(float) (Math.cos(alpha +alphaStep) *lineD);float y1 =(float) (Math.sin(alpha +alphaStep) *lineD);float z1 =z0;pos.add(x0);pos.add(y0);pos.add(z0);pos.add(x1);pos.add(y1);pos.add(z1);}}ByteBuffer bb =BufferUtil.list2ByteBuffer(pos);gl.glVertexPointer(3, GL10.GL_FLOAT, 0, bb);gl.glDrawArrays(GL10.GL_LINE_STRIP, 0, pos.size()/3);}}
2、运行效果
0 0
- OpenGL ES 绘制圆环
- android 使用OPENGL ES绘制一个圆环-三维空间
- opengl圆环的绘制
- OpenGL ES 绘制多边形
- opengl|es - 2D绘制
- opengl|es - 2D绘制
- OpenGL ES绘制3D
- openGL es 4:绘制方式
- openGL ES Android 三角形绘制
- openGL ES Android 绘制点
- OpenGL ES 绘制颜色立方体
- OpenGL ES(3) - 绘制形状
- OPENGL-ES之绘制金字塔
- OpenGL ES 2.0 - 绘制方式
- iOS OpenGL ES 研究二:OpenGL ES绘制图形精华
- 绘制圆环
- OpenGL ES绘制3D图形
- OpenGL ES绘制3D图形
- Android-html源代码的获取
- 君と彼女の恋
- Jquery load()方法 实现公用头部 尾部
- 深入理解Java内存模型(四)——volatile
- 多线程一 CreateThread与_beginthreadex的本质区别
- OpenGL ES 绘制圆环
- UVa 10651 Pebble Solitaire(状态压缩DP)
- 轮舞前夕
- JSP学习笔记(五):web.xml中的url-pattern的映射规则
- 获取历史和实时股票数据接口
- UVA 10006 Carmichael Numbers(快速幂)
- Linux中SVN定时备份总结
- D进制的A+B
- 欢迎使用CSDN-markdown编辑器