这是我在android下用OGL ES画的第一个图形,Render的override部分引用了其它同学的一些代码
怎么上截图?

public class GLRender implements Renderer{float rotateAngle;//顶点数组,GL ES只能用这个办法画圆吗?private float[] vertices = new float[720];//度到弧度的转换    public float DegToRad(float deg)    {    return (float) (3.14159265358979323846 * deg / 180.0);    }    @Override    public void onDrawFrame(GL10 gl) {        // TODO Auto-generated method stub            // 进入这个函数第一件要做的事就是清除屏幕和深度缓存        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);        //画圆形    drawCircle(gl);    }        public void drawCircle(GL10 gl)    {        //重置投影矩阵        gl.glLoadIdentity();        // 移动操作,移入屏幕(Z轴)5个像素, x, y , z        gl.glTranslatef(0.0f, 0.0f, -5.0f);                //旋转, angle, x, y , z        gl.glRotatef(rotateAngle, 1.0f, 0.0f, 0.0f);        // 设置当前色为红色, R, G, B, Alpha        gl.glColor4f(1.0f, 0.1f, 0.1f, 1.0f);                //设置圆形顶点数据,这个是在创建时生成    FloatBuffer verBuffer = FloatBuffer.wrap(vertices);    //设置顶点类型为浮点坐标(GL_FLOAT),不设置或者设置错误类型将导致图形不能显示或者显示错误    gl.glVertexPointer(2, GL10.GL_FLOAT, 0, verBuffer);        //打开顶点数组        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);            //向OGL发送实际画图指令    gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, 360);            //关闭顶点数组功能        gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);        //画图结束        gl.glFinish();                //更改旋转角度        rotateAngle += 0.5;    }        @Override    public void onSurfaceChanged(GL10 gl, int width, int height) {        // TODO Auto-generated method stub                float ratio = (float) width / height;        //设置OpenGL场景的大小        gl.glViewport(0, 0, width, height);        //设置投影矩阵        gl.glMatrixMode(GL10.GL_PROJECTION);        //重置投影矩阵        gl.glLoadIdentity();        // 设置视口的大小        gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10);        // 选择模型观察矩阵        gl.glMatrixMode(GL10.GL_MODELVIEW);            // 重置模型观察矩阵        gl.glLoadIdentity();                }    @Override    public void onSurfaceCreated(GL10 gl, EGLConfig config) {        // TODO Auto-generated method stub        // 启用阴影平滑        gl.glShadeModel(GL10.GL_SMOOTH);        // 黑色背景        gl.glClearColor(0, 0, 0, 0);        // 设置深度缓存        gl.glClearDepthf(1.0f);                                    // 启用深度测试        gl.glEnable(GL10.GL_DEPTH_TEST);                                // 所作深度测试的类型        gl.glDepthFunc(GL10.GL_LEQUAL);                                            // 告诉系统对透视进行修正        gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);                        //初始化圆形数据    for (int i = 0; i < 720; i += 2) {        // x value        vertices[i]   = (float) (Math.cos(DegToRad(i)) * 1);        // y value        vertices[i+1] = (float) (Math.sin(DegToRad(i)) * 1);    }    }}


完整程序见附件

更多相关文章

  1. android之xml定义数组
  2. android 对图像进行矩阵变换(Martix)的使用笔记
  3. Android中的矩阵(Matrix)变换
  4. android okgo post传数组
  5. C# android base-64 字符数组的无效长度
  6. Android下openGL操作矩阵的函数
  7. Android开发便签9:在android资源文件中定义字符串数组
  8. Android build.gradle buildConfigField 配置数组
  9. Android期末项目(一)—— 解析二维数组对象

随机推荐

  1. 百度Java架构师分享分布式锁的技术选型及
  2. Java常用类及其常用方法
  3. Spring与HSQLDB最新的2.4.0版本无法正常
  4. 二分法查找递归方式()
  5. java三角形的画法
  6. 如何使用正则表达式验证java中的URL ?(复
  7. 《深入理解Java虚拟机》:HotSpot虚拟机内
  8. Java从零开始学二(标识符和关键字)
  9. Lambda中S3事件的自动反序列化
  10. javabean里面package的问题,大虾帮忙!