1
我注意到隨着緩衝區大小的增加,更新VBO中的少量頂點變得非常緩慢。例如,當我更新時,例如512 * 512緩衝區中的2個垂直速度要慢得多,然而當我更新整個256 * 256緩衝區時,儘管更新的數據量完全相反。 這是glBufferSubData的正常行爲嗎?是什麼讓glBufferSubData在緩衝區上變慢?
我這是怎麼分配緩衝區:
glBufferData(GL_ARRAY_BUFFER, sizeof(uiMapView::vertex)*(size + 1)*(size + 1), m_verts, GL_DYNAMIC_DRAW);
這是我如何更新:
glBufferSubData(GL_ARRAY_BUFFER, sizeof(uiMapView::vertex)*iMinId, sizeof(uiMapView::vertex)*(iMaxId-iMinId), (&m_verts[iMinId]));
除非給出更多的細節,否則這個問題是無法回答的。緩衝區更新性能將受到緩衝區訪問模式,更新頻率以及當然具體實現的嚴重影響。 [OpenGL Insights中的異步緩衝區轉移的免費章節](http://www.seas.upenn.edu/~pcozzi/OpenGLInsights/OpenGLInsights-AsynchronousBufferTransfers.pdf)可能會解釋一些您必須處理的問題。 – derhass
@derhass,感謝您提供有用的鏈接,但這不是一個真正的問題 – Yevheniy8