Android基于OpenGL ES 3.0的VBO,VAO,EBO的使用(NDK开发)

有过一点OpenGL开发经验的人就知道每次绘图之前都会绑定顶点数组,每次将一个顶点传到GPU进行绘制。但是从CPU传数据到GPU的效率并不高,所以我们就需要使用VBO顶点缓存对象来一次性传递多个顶点到GPU,而VAO是3.0以后的版本才有的功能,它允许我们保存对于顶点的配置信息,我们配置好之后就只需要绑定对应的VAO,然后直接绘制即可。索引缓冲对象EBO和VBO类似也就是保存下标的缓冲。
- 顶点数组对象:Vertex Array Object,VAO
- 顶点缓冲对象:Vertex Buffer Object,VBO
- 索引缓冲对象:Element Buffer Object

下面就简单实用这三个东西来绘制一个三角形和一个矩形。

EGL环境初始化

这里我就不多说了,可以看我之前的文章关于Android端EGL环境
这里注意的一点是需要注意API的版本,但是我在手机上测试实用2也能用,这就很尴尬了。

 EGLint eglContextAttribute[] = {
            EGL_CONTEXT_CLIENT_VERSION, 3,
            EGL_NONE
    };
    if (!(context = eglCreateContext(display, config,
                                     NULL == sharedContext ? EGL_NO_CONTEXT : sharedContext,
                                     eglContextAttribute))) {
        LOGE("eglCreateContext() returned error %d", eglGetError());
        release();
        return false;
    }
着色器

绘制三角形和矩形的着色器都十分简单,直接贴上。3.0的GLSL使用in代替了attribute,out代替varying。片元着色器的out就是制定颜色输出了。

1、vertex_shader.glsl
#version 300 es
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值