OpenGL程序时不时地落后

时间:2014-06-20 10:21:06

标签: c++ opengl

我正在使用带有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;
}

0 个答案:

没有答案