我创建一个地形引擎,目前我一次上传整个地形VB(顶点缓冲区)和IB(索引缓冲)的GPU,因为地形不巨大。目前是256x256。上传顶点和索引缓冲区到GPU
现在,让我们说,我想创建一个使用Perlin杂点生成高度图一个程序地形。我可以生成“补丁”并一次性向GPU上传补丁的所有VB和IB,但是随着玩家移动很远并且必须生成新的补丁,那么我将不得不生成新补丁并将其上传到GPU。我在脑海中遇到的困惑或问题有:
将VB和IB上传到GPU上是否缓慢?数据上传到GPU时,玩家是否会注意到闪烁?
会表现更好,如果我上传了补丁的VB和IB逐步向GPU,而不是所有的人都在一次?基本上我在问VB和IB的大小是否很重要。
任何关于这个概念的信息将不胜感激。
谢谢!
令人惊讶的是,今晚我会做一些测试,看看它是如何发展的。感谢您提供非常详细的答案。但是关于“自己加载地图需要多长时间”,让我们假设VB和IB已准备好上传(缓存在vram上),上传到GPU时VB和IB的大小不会有关系,if VB可能有1000x1000顶点的补丁,那么我应该注意到快门,对吧?越少,上传到GPU的速度越快? – raRaRa 2011-06-09 14:13:33
@raRaRa:vram是什么意思?显卡上的RAM?那么,这就是GPU RAM,这就是缓冲区对象的全部内容。如果它已经加载到系统RAM中:是的,这个值越大,上传的时间就越长。但最终的重点是上传的顶点总数,如果它们有很多小块或大块,它们没有什么大的区别。如果你渲染的场景需要所有的视觉细节,他们将全部以任何方式上传,然后才能绘制任何内容。 – datenwolf 2011-06-09 14:37:04
我的意思是系统内存。但是,是的,我也意味着逐渐上传很多小块,同时一次上传所有小块。 – raRaRa 2011-06-09 14:42:09