OpenGL ES:理解VBO和VAO

        VBO(Vertex Buffer Object)顶点缓冲区对象,是OpenGL ES 2.0之后一个可使用的功能。表示存在于显存中的一个对象,用于存储顶点坐标、纹理坐标等相关信息。如果不使用VBO则是将顶点、纹理坐标等数据存放在内存中,在每次绘制之前通过通IO将其传递到显存中,这样做的缺点是显而易见的,每次传递的数据相同还要花费同样的IO开销,所以绘制这些数据不发生变化的物体尽量使用VBO方式,提升性能。下面是使用传统方法绘制的代码

首先获取顶点坐标数据

public void initVertexData(float[] vertices) {
    // 顶点坐标数据的初始化
    mCount = vertices.length / 3;   

    // 创建顶点坐标数据缓冲区 vertices.length*4是因为一个整数四个字节
    ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4);
    vbb.order(ByteOrder.nativeOrder());    //设置字节顺序

    mVertexBuffer = vbb.asFloatBuffer();   //转换为Float型缓冲
    mVertexBuffer.put(vertices);           //向缓冲区中放入顶点坐标数据
    mVertexBuffer.position(0);             //设置缓冲区起始位置
}

每次绘制一帧该物体时调用

public void draw()
{        
    // 制定使用某套着色器程序
    GLES20.glUseProgram(mProgram); 
    // 将最终变换矩阵传入着色器程序
    GLES20.glUniformMatrix4fv(muMVPMatrixHandle
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值