【问题标题】:How Modern OpenGL ID's works?现代 OpenGL ID 的工作原理是什么?
【发布时间】:2021-01-04 17:24:31
【问题描述】:

我不明白 OpenGL ID 是如何工作的。示例:

 static const GLfloat g_vertex_buffer_data[] = {
        -1.0f, -1.0f, 0.0f,
         1.0f, -1.0f, 0.0f,
         0.0f,  1.0f, 0.0f,
    };

    GLuint vertexbuffer;
    glGenBuffers(1, &vertexbuffer);
    glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
    glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data),      g_vertex_buffer_data, GL_STATIC_DRAW);

这里openGL获取数组的位置并创建一个缓冲区并将数组的位置放入缓冲区。我明白。但我不明白下面的这段代码。这究竟是做什么的?根据我的阅读,他创建了一个 id 数组来缓冲,但这似乎有些抽象。

GLuint VertexArrayID;
glGenVertexArrays(1, &VertexArrayID);
glBindVertexArray(VertexArrayID);

在我看来,我看到这样的代码:

【问题讨论】:

标签: c++ opengl buffer


【解决方案1】:

glGenBuffers 为缓冲区对象保留编号(名称)。 glBindBuffer 如果指定编号(名称)尚不存在,则创建具有指定编号(名称)的缓冲区对象。
glGenVertexArrays 分别创建可用于Vertex Array Objects 的保留编号(名称)。 glBindVertexArray 如果不存在指定编号(名称)的顶点数组对象,则创建它。
顶点数组对象存储顶点规范。它将glVertexAttribPointerglEnableVertexAttribArray等为每个属性指定的所有信息分别存储在一个向量中。当glVertexAttribPointer被调用时,当前绑定到目标ARRAY_BUFFER的缓冲区与属性相关联,对象的编号(名称)存储在VAO的状态向量中。

【讨论】:

  • 您好,感谢您的帮助!我是这么理解的,是现在吗? ibb.co/nmMCW9D glGenBuffers -> 创建 ID 缓冲区 glBindBuffer -> 在 ID glBufferData 上的 binBuffer -> 将数据放入缓冲区 glGenVertexArrays -> 创建顶点数组 id glBindVertexArray -> 绑定顶点数组 id glVertexAttribPointer -> 发送顶点数组如何解释缓冲区数据
猜你喜欢
  • 2010-11-30
  • 1970-01-01
  • 2021-01-07
  • 2015-12-12
  • 2019-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
相关资源
最近更新 更多