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