glVertexAttribDivisor 存储在哪里 - VAO、VBO 或全局状态?
Where is glVertexAttribDivisor stored - VAO, VBO or global state?
这是一个示例代码:-
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/实例VBO/全局状态)
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)
glBindBuffer(GL_ARRAY_BUFFER, 0);
。
如果您也愿意提供参考,我将不胜感激,我可以阅读更多关于:
哪些设置/状态由Opengl的哪个东西(VAO/VBO/等)拥有
顶点数组除数 (VERTEX BINDING DIVISOR
) 存储在顶点数组对象状态向量中,分别针对每个顶点属性(如启用状态、偏移量、步幅等)。
存储在VAO中的状态列在表23.3:顶点数组对象状态的规范中。
VAO 在 OpenGL 4.6 API 核心配置文件规范 - 10.3.1 顶点数组对象中指定。
另请参阅顶点规范 - 实例化数组
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 当vector是tje全局变量时,c++中vector的内存管理
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何创建一个空的全局类并在启动时实例化它
- 内联函数中具有内部链接的全局变量
- 为什么虚函数不能是静态的和全局的?
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- OSX MetalKit CVMetalTextureCacheCreateTextureFromImage失败,状态:
- 通过require在不同的Lua状态之间共享全局变量
- glVertexAttribDivisor 存储在哪里 - VAO、VBO 或全局状态?
- 全局挂钩 DLL 仅在 C# 主窗口处于活动状态/前台时调用 C# 回调方法
- 存储在全局变量中的函数指针在进入函数时设置为 0,并在退出函数时返回到以前的状态
- 状态C 全局空隙函数指针
- 如何在本地设置和全局设置之间以C 11 RNG的初始状态进行切换
- JNI保留对对象的全局引用,并使用其他JNI方法访问它.在多个JNI调用中保持C++对象的活动状态
- 如何在不使用全局变量的情况下通知外部线程主线程状态
- 函数成员中的状态数据与全局函数