美文网首页
LearnOpenGL VAO VBO EBO

LearnOpenGL VAO VBO EBO

作者: li_礼光 | 来源:发表于2020-09-14 10:21 被阅读0次
      VAO VBO EBO 的关系
         ------------------------
         | VBO                  |
         | -------------------- |
         | | VAO              | |
         | -------------------- |
         | -------------------- |
         | | VAO              | |
         | -------------------- |
         | -------------------- |
         | | VAO              | |
         | -------------------- |
         | -------------------- |
         | | VAO              | |
         | -------------------- |
         |  ....                |
         |  ....                |
         |                      |
         ------------------------
    
         | -------------------- |
         | | EBO              | |
         | -------------------- |
    
    

    可以理解为EBO是最后一个VBO, EBO是专门用来处理索引的

    有的教程说EBO是最后一个特殊的VAO, 也可以这么理解吧, EBO是放在整个内存的最后面. 但从代码的绑定方法来看, EBO的创建方式和VBO的又是样的. 也可以理解为紧挨着VBO的特殊的VBO吧.
    (后面再深刻整理下EBO)

    image.png
      //创建VBO
      glGenBuffers(1, &VBO);
      glBindBuffer(GL_ARRAY_BUFFER, VBO);
      glBufferData(GL_ARRAY_BUFFER, sizeof(squareVertices), squareVertices, GL_STATIC_DRAW);
            
      //创建VAO
      glGenVertexArrays(1, &VAO);
      glBindVertexArray(VAO);
      glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), (GLvoid*)0);
      glEnableVertexAttribArray(0);
            
      //创建EBO, 这里的EBO相当于索引的作用
      glGenBuffers(1, &EBO);
      glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
      glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(squareIndices), squareIndices, GL_STATIC_DRAW);
    
      //解绑VAO
      glBindVertexArray(0);
    
    

    从代码分析来看, 这里面
    VAO : glBindVertexArray
    VBO : glBindBuffer
    EBO : glBindBuffer

    #define GL_ARRAY_BUFFER 0x8892
    #define GL_ELEMENT_ARRAY_BUFFER 0x8893

    首先VAO调用的绑定方法和VBO, VEO不一样.
    绑定的buffer类型也不相同 GL_ARRAY_BUFFER和GL_ELEMENT_ARRAY_BUFFER

    思路整理下就很容易理解了.

    相关文章

      网友评论

          本文标题:LearnOpenGL VAO VBO EBO

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