2012-07-24 63 views
0

我知道VBOs本质上是存储在显卡上的内存,而不是每次都需要发送数据。关于VBOs的几个问题

我的问题:

  1. 听说维也纳组织只支持一个纹理。这是一个纹理总数还是每个渲染调用只有一个纹理?我必须渲染多个BSP区域,每个区域通常有3-4个纹理。我可以简单地创建VBO,只是用不同的纹理绑定4次调用drawelements。这是什么性能打击?

  2. 是否有最大数量的VBO?我打算在BSP的每个区域附加一个。在一些层面上,我可以有200-3000个地区。是否有可能在这些不同地区有3000个小型维也纳国际组织?

回答

3

您可以拥有的纹理数量不取决于VBO的数量。

您可以在一个渲染过程中使用的纹理的数量取决于您拥有的纹理单元的数量。至少有两个,但通常你有更多。

据我所知,VBO的数量没有限制,它取决于你的图形卡RAM的大小。

但它更有效地使用较少的VBO。

+0

+1。澄清:每帧发送3000个glDrawElements()是相当多的。减少平局通常比较便宜,但是用更大的网格。 – Calvin1602 2012-07-24 07:05:37

+0

@ Calvin1602内存不会再次被复制到GPU上吗?由于通话次数的原因,它会变慢。 – 2012-07-24 08:12:19

+0

不,它不会被复制。缓冲区绑定调用和drawcalls是昂贵的,如果你做了很多。 – Dirk 2012-07-24 08:27:20