Orphan Delta Time (In Seconds): ~0.00049
Sync Delta Time (In Seconds): ~0.00053
So I am left wondering: I'm doing it correctly?
Sync version Below
//Map buffer Method
void MapBuffer()
{
if (mapPointer != NULL)
return;
//In working with Orphan version. This fence code would be gone
fence = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, NULL); //Create the fence
GLenum state = glClientWaitSync(fence, GL_SYNC_FLUSH_COMMANDS_BIT, 1000000000); //Timeout after 1 second
glDeleteSync(fence); //Delete the fence object
if (state != GL_CONDITION_SATISFIED) //If anything other than satisfied. Print it out
std::cout << "Fence blocked! CODE: " << state << std::endl;
glBindBuffer(GL_ARRAY_BUFFER, vbo);
if (mapBufferOffset == mapBufferLength)
{
mapBufferOffset = 0;
baseVertex = 0;
//glBufferData(GL_ARRAY_BUFFER, mapBufferLength, NULL, GL_DYNAMIC_DRAW); <--- Orphaned here in Orphan version
}
mapPointer = (GLfloat*)glMapBufferRange(GL_ARRAY_BUFFER, mapBufferOffset, mapBufferLength - mapBufferOffset, GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT);
if (mapPointer == NULL)
throw std::runtime_error("Sprite Batcher Error. Map Pointer is NULL");
}
//Main loop in a nutshell
int main()
{
while(run)
{
MapBuffer();
DrawSprite(1);
DrawSprite(2);
UnmapBuffer();
Render();
}
}