我正在使用OpenGL
来实现某种批量绘图。为此,我创建了一个vertex buffer
来存储数据。
注意:此缓冲区通常会在每个帧上更新,但永远不会减小大小(但仍然可以增加)。
我的问题是:使用glBufferData
(使用s treaming write-only mode
)进行更新(而不是glMapBuffer
)在技术上是否正确?我想没有必要映射它,因为更新了完整的数据,所以我只需要立即发送一个完整的数据包。如果当前的缓冲区大小比我发送的少,它会自动增加,不是吗?我现在确定它的实际工作方式(也许它会在每次调用时重新创建缓冲区,不是吗?)。
答案 0 :(得分:12)
最好使用固定大小的缓冲区,不要每帧重新创建它。
您可以通过以下方式实现这一目标:
link:http://hacksoflife.blogspot.com/2010/02/double-buffering-vbos.html
希望有所帮助
答案 1 :(得分:5)
除了fen和datenwolf所说的,请参阅Chapter 22 of OpenGL Insights;特别是,它包括各种硬件和时间的定时。技术。