美文网首页
4-3 glBindBuffer() 函数

4-3 glBindBuffer() 函数

作者: super小立立 | 来源:发表于2017-12-12 09:13 被阅读0次

glBindBuffer() 函数

准备数据

预先将顶点buffer 数据拷贝到 GPU 里面去,并将数据绑定在 vertexBufferId 上面.

将使用的位置设置为静态的画布,之后就是

等待画布的执行.,

//copy vertices from cpu to the gpu
IntBuffer buffer =  IntBuffer.allocate(1);
GLES20.glGenBuffers(1,buffer);
//获取一个 bufferID , 准备将数据拷贝到GPU 上面, 句柄就是这个int 值,
vertexBufferId = buffer.get();
//绑定生成的 vertexBufferId 到 GL_ARRAY_BUFFER 上面去, target
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER , vertexBufferId);
//绑定 FloatBuffer 数据,
//第一个参数, buffer 的类型(目标)
//第二个参数是数据的长度, 这个地方的长度直接是 triangleBuffer 的长度, 这个  float 是4字节的, 所以可以直接使用数组的长度 * 4 得到
//第三个参数是 buffer 数据(坐标数据)
//第四个参数指定了 用法 , 是静态的画布上面
GLES20.glBufferData(GLES20.GL_ARRAY_BUFFER ,triangleVertexArray.length * 4, triangleBuffer , GLES20.GL_STATIC_DRAW);

加载和使用数据

setVertexAttribute 使用的时候不是直接传入 buffer , 而是直接使用 offset 来设置, 之后的数据直接在useProgram() 之后,调用 glBindBuffer() 通知数据挂起

shaderProgram.enableVertexAttribute("vPosition");
//这个地方没有使用 传入数据, 而是选择 offset 这个函数, 将数据的传入放到了后面的 GPU 里面直接拉取,
shaderProgram.setVertexAttribute("vPosition" ,vertexCount , GLES20.GL_FLOAT , false , vertexStride , 0);

//加载buffer 数据到画布里面去
//数据之前就已经放置进去了.
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, vertexBufferId);
//开始画.
GLES20.glDrawArrays(GLES20.GL_TRIANGLES , 0, vertexCount);

相关文章

  • 4-3 glBindBuffer() 函数

    glBindBuffer() 函数 准备数据 预先将顶点buffer 数据拷贝到 GPU 里面去,并将数据绑定在 ...

  • 减肥打卡4

    4-3

  • 第八十五匹马

    你永不独行 4-3 安菲尔德

  • WEEK4 4-3Change Your Thoughts, C

    DATE 2016/01/27COURSE 4-3 Change Your Thoughts, Change ...

  • 4-3

    没有人们能让我输,除非我我不想赢了

  • 4-3

    辞君醉卧红楼内 玉面何曾笑靥开 柳绿春浓花正艳 离人未见踏风来

  • 4-3

    我今天上午在上课的时候,我在想一个问题,这是不是我最后一次在总部上课了呢?对总部的讲台没有太多的留恋,不知道留恋的...

  • 4-3

    痕迹会逐渐淡化。 人事会努力淡忘。

  • 4-3

    在这个资本主义的社会,投资的风险很大,有人赚钱就有人陪钱,对于我来说,如果投资,我会选择理财,因为理财会相对保守一...

  • 4-3

    好的 在上一讲我们谈到了多准则决策的制定我们有很多不同的维度你根据那些维度来权衡各种方案在这节里 我们讨论的方向将...

网友评论

      本文标题:4-3 glBindBuffer() 函数

      本文链接:https://www.haomeiwen.com/subject/kbzwixtx.html