How do i stream to a vertex buffer using Direct State Access? I want to update my vertex buffer of matrices every frame so i can use it in my Shader. This is how i specify my buffer. I do this once in my application when i initialize my VAO.
glNamedBufferStorage(StaticModelData::instanceDataID, sizeof(InstanceData)*10, nullptr, 0);
glMapNamedBufferRange(StaticModelData::instanceDataID, 0, sizeof(InstanceData) * 10, GL_MAP_UNSYNCHRONIZED_BIT);
glVertexArrayVertexBuffer(StaticModelData::vaoID, 1, StaticModelData::instanceDataID, 0, 0);
glVertexArrayAttribBinding(StaticModelData::vaoID, 3, 1);
glVertexArrayAttribFormat(StaticModelData::vaoID, 3, 4, GL_FLOAT, GL_FALSE, 0);
glVertexArrayAttribBinding(StaticModelData::vaoID, 4, 1);
glVertexArrayAttribFormat(StaticModelData::vaoID, 4, 4, GL_FLOAT, GL_FALSE, sizeof(float) * 4);
glVertexArrayAttribBinding(StaticModelData::vaoID, 5, 1);
glVertexArrayAttribFormat(StaticModelData::vaoID, 5, 4, GL_FLOAT, GL_FALSE, sizeof(float) * 8);
glVertexArrayAttribBinding(StaticModelData::vaoID, 6, 1);
glVertexArrayAttribFormat(StaticModelData::vaoID, 6, 4, GL_FLOAT, GL_FALSE, sizeof(float) * 12);
glVertexArrayBindingDivisor(StaticModelData::vaoID, 1, 1);
Every frame i do this to render
instanceDatas = updateMatrices();
updateShader();
glBindVertexArray(StaticModelData::vaoID);
glNamedBufferData(StaticModelData::instanceDataID, sizeof(InstanceData)*(instanceDatas.size()), &instanceDatas[0], 0);
glBindTexture(GL_TEXTURE_2D, 1);//hardcoded
glDrawElementsInstanced(GL_TRIANGLES, it->second.modelIndexNum, GL_UNSIGNED_INT, (void*)(sizeof(int)*(it->second.indexOffset)), it->second.instances.size());