Is it possible to resize a vbo
本问题已经有最佳答案,请猛点这里访问。
我正在使用以下代码初始化一个对象。
1 2 3 4 5 6 | std::vector<float> topRightBevelData = draw_circular_bevel(rightWidth, rightHeight, rightTopBevel, 1, 1, iSegmentsRightTop); glGenVertexArrays(1, &m_VAOTopRightCircle); glGenBuffers(1, &m_VBOTopRightCircle); glBindVertexArray(m_VAOTopRightCircle); glBindBuffer(GL_ARRAY_BUFFER, m_VBOTopRightCircle); glBufferData(GL_ARRAY_BUFFER, topRightBevelData.size() * sizeof(float), &topRightBevelData[0], GL_DYNAMIC_DRAW); |
我会不断更新 VBO。
1 2 3 4 | std::vector<float> topRightBevelData = draw_circular_bevel(xWidth / 2.0, 0.0, 0.0, rightWidth, rightHeight, rightTopBevel, 1, 1, iSegmentsRightTop); glBindBuffer(GL_ARRAY_BUFFER, m_VBOTopRightCircle); glBufferSubData(GL_ARRAY_BUFFER, 0 ,topRightBevelData.size() * sizeof(float), &topRightBevelData[0]); |
有时更新 vbo 的数据会大于 VBO 的大小,在这种情况下我可以增加 VBO 的大小吗?
[...] can i increase the size of VBO ?
没有。缓冲区(如顶点缓冲区对象)的大小是不可变的。如果您需要更大尺寸的缓冲区,则必须通过
重新创建缓冲区对象
我建议在初始化时创建一个足够大的缓冲区。