首页 > 其他分享 >再谈 vbo 和 ebo 的关系

再谈 vbo 和 ebo 的关系

时间:2022-11-01 16:22:09浏览次数:45  
标签:EBO vbo ebo VBO 再谈 数组 顶点

vbo 就是一个一维数组、一般是 GLfloat 类型的数组

数组的内容怎么去解释? 用 glVertexAttribPointer

ebo 也是一个一维数组、不过是 GLuint 的数组(显然索引一般没有负数的)

如果 vbo是:

[ p1x p1y p1z p2x p2y p2z ....   p?x, p?y, p?z ]

那么我们想用 vbo 这个数组里的 【第a个、第b个、第c个】点去画一个三角面?

那么就写ebo:

【a-1, b-1, c-1 ... (可能还有很多)】

这里最混淆的一点就是、其实到这里显卡还是不知道你要用abc画一个面!还必须在 glDrawElement 的时候指定 GL_TRIANGLES

于是简单理解这个流程:

  假设OpenGL就是一个黑盒子:

    你给它 EBO、图元的类型(三角形、线段、环、扇面)

    它去 EBO中、拿着索引去VBO找实际的数、并且按照 VertexAttribPointer 指定的方法扔给shader

    (例如 EBO 如果是 X 、去VBO中找第 (X-1) 号 ”顶点“,这个顶点可能有 xyz、rgb、uv、normal、但由于VertexAttribPointer指定了数据量、跨度、偏移,而且输入的VBO一般都是规则的、那么这一组的数其实可以看成一个顶点去调用一次 vertexShader)、最后装配出TRIANGLES

 

总而言之、不需要扣的太细、大概知道怎么回事、然后在编程中犯错、改错、就能逐渐体会到了。

标签:EBO,vbo,ebo,VBO,再谈,数组,顶点
From: https://www.cnblogs.com/gs590/p/16848120.html

相关文章