我在某处读到OpenGL 4.4引入的不可变缓冲区可以更快,所以我试图学习使用它们。我试图创建一个不可变的索引缓冲区,如下所示:
glGenBuffers( 1, &iboId );
glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, iboId );
GLbitfield flags = GL_MAP_WRITE_BIT |
GL_MAP_PERSISTENT_BIT |
GL_MAP_COHERENT_BIT;
glBufferStorage( GL_ELEMENT_ARRAY_BUFFER, faceCount * sizeof( Face ), faces, flags );
但是,我在最后一行收到了一个OpenGL错误:
GL_INVALID_OPERATION error generated. Cannot modify immutable buffer.
如何创建不可变索引缓冲区并为其提供索引?还是我误解了这个特征的全部意义?
答案 0 :(得分:0)
我在评论中解释了这一点:
我在加载时试图在我的应用程序中使用相同的iboId两次 来自同一文件的多个网格。这个问题的代码是 更正,由于缓存,我的应用程序略有不同 这导致了错误。