• OpenGl入门


    /**  

    * 入门,三角形  

    */

    //自定义渲染器

    class MyRenderer implements android.opengl.GLSurfaceView.Renderer{

     private float ratio;

     //表层创建时

     public void onSurfaceCreated(GL10 gl, EGLConfig config) {   

    //设置清屏色   

    gl.glClearColor(0, 0, 0, 1);   

    //启用顶点缓冲区.   

    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);  

    }

     //表层size时  

    public void onSurfaceChanged(GL10 gl, int width, int height) {   

    //设置视口,输出画面的区域   

    gl.glViewport(0, 0, width, height);      

    ratio = (float)width / (float)height;      

    //矩阵模式,投影矩阵,openGL基于状态机   

    gl.glMatrixMode(GL10.GL_PROJECTION);  

     //加载单位矩阵  

     gl.glLoadIdentity();  

     //平截头体   

    gl.glFrustumf(-1f, 1f, -ratio, ratio, 3, 7);  

    }

     //绘图  

    public void onDrawFrame(GL10 gl) {     

     //清除颜色缓存区   

    gl.glClear(GL10.GL_COLOR_BUFFER_BIT);      

    //模型视图矩阵   

    gl.glMatrixMode(GL10.GL_MODELVIEW);   

    gl.glLoadIdentity();//加载单位矩阵   

    //eyex,eyey,eyez:放置眼球的坐标   

    //centerx,centery,centerz:眼球的观察点.   

    //upx,upx,upx:指定眼球向上的向量   

    GLU.gluLookAt(gl, 0, 0, 5, 0, 0, 0, 0, 1, 0);     

     //画三角形

      //绘制数组  

     //三角形座标   

    float[] coords = {   

     0f,ratio,2f,  

      -1f,-ratio,2f,   

     1f,-ratio,2f   };      

    //分配字节缓存区空间,存放顶点坐标数据   

    ByteBuffer ibb = ByteBuffer.allocateDirect(coords.length * 4);   

    //设置的顺序(本地顺序)   

    ibb.order(ByteOrder.nativeOrder());  

     //放置顶点坐标数组   

    FloatBuffer fbb = ibb.asFloatBuffer();  

     fbb.put(coords);  

     //定位指针的位置,从该位置开始读取顶点数据   

    ibb.position(0);     

     //设置绘图颜色,红色   

    gl.glColor4f(1f, 0f, 0f, 1f);     

     //3:3维点,使用三个坐标值表示一个点  

     //type:每个点的数据类型   

    //stride:0,跨度.   

    //ibb:指定顶点缓冲区   

    gl.glVertexPointer(3, GL10.GL_FLOAT, 0, ibb);  

     //绘制三角形   

    //0:起始点:  

     //3:绘制点的数量   

    gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3);

     }

    }

  • 相关阅读:
    【Swift】WKWebView与JS的交互使用
    【React Native】进阶指南之二(手势响应系统)
    【React Native】进阶指南之一(特定平台、图片加载、动画使用)
    React Native适配IPhoneX系列设备之<SafeAreaView />
    【React Native】react-native之集成支付宝支付、微信支付
    【React Natvie】React-native-swiper的安装和配置【ES6】
    React Native之React Navigation踩坑
    遭遇裁员,如何渡过心理危机?
    Spring 核心技术与产品理念剖析【下】
    Spring 核心技术与产品理念剖析【上】
  • 原文地址:https://www.cnblogs.com/danmao/p/3817424.html
Copyright © 2020-2023  润新知