我正在使用带有SDL 2,OpenGL 3.3,Windows 8的C ++。每当我运行程序时,绘制每个帧所需的时间通常为< 1 ms
,因为我只绘制了几百个四边形。它是批量绘图,它们都具有相同的纹理。我不是在询问GPU。我试过在每一帧结束时调用glFlush()
。但每隔一段时间,绘画所需的时间会突然跳升到3-5 ms
。有时它会跳到甚至30毫秒。我该怎么做才能解决这个问题?
void XL::SpriteBatch::render()
{
generateElements();
glBufferSubData(GL_ARRAY_BUFFER, 0, vertexCount * 8 * sizeof(vertexBuffer[0]), vertexBuffer.data());
glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, 0, ebOffset * sizeof(elementBuffer[0]), elementBuffer.data());
glDrawElements(GL_TRIANGLES, vertexCount / 4 * 6, GL_UNSIGNED_INT, 0);
vertexBuffer.clear();
elementBuffer.clear();
vertexCount = 0;
ebOffset = 0;
}