gpt4 book ai didi

c++ - glVertexAttribDivisor 存储在哪里 - VAO、VBO 或全局状态?

转载 作者:行者123 更新时间:2023-11-27 23:38:05 26 4
gpt4 key购买 nike

这是一个示例代码:-

unsigned int instanceVBO;
glGenBuffers(1, &instanceVBO);
glBindBuffer(GL_ARRAY_BUFFER, instanceVBO);
glBindVertexArray(VAO);
...
glBufferData(GL_ARRAY_BUFFER, sizeof(glm::vec2) * 100,
&translations[0], GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
... ... ...
glEnableVertexAttribArray(2);
glBindBuffer(GL_ARRAY_BUFFER, instanceVBO);
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), (void*)0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glVertexAttribDivisor(2, 1); //<--- who own this setting?
//^ mostly copied from https://learnopengl.com/Advanced-OpenGL/Instancing

谁拥有 glVertexAttribDivisor 设置? (VAO/instanceVBO/全局状态)

https://gamedev.stackexchange.com/questions/99236/what-state-is-stored-in-an-opengl-vertex-array-object-vao-and-how-do-i-use-the#comment174555_99238 中的评论建议它存储在 VBO 中。

但是,注释与上面调用 glVertexAttribDivisor(2, 1) after unbinds glBindBuffer 的代码相矛盾(?) (GL_ARRAY_BUFFER, 0); .

如果您也愿意提供引用资料,我将不胜感激:
Opengl 的哪一个东西(VAO/VBO/等)拥有哪些设置/状态。

最佳答案

顶点数组除数(VERTEX BINDING DIVISOR)存储在顶点数组对象状态 vector 中,分别对应每个顶点属性(如启用状态、偏移量、跨度等)。

存储在 VAO 中的状态在 Table 23.3: Vertex Array Object State 的规范中列出。 .
VAO 在 OpenGL 4.6 API Core Profile Specification - 10.3.1 Vertex Array Objects 中指定.

另见 Vertex Specification - Instanced arrays

关于c++ - glVertexAttribDivisor 存储在哪里 - VAO、VBO 或全局状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57643724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com