2013-11-24 85 views
0

因此,假设我有一个大于包含图块的屏幕的VBO,我可以在不损失任何性能的情况下绘制整个VBO,还是只有绘制子图的方法填满屏幕的VBO的一部分? VBO会占用大部分VRAM吗? VBO的优点是速度。渲染比屏幕更大的VBO,

+0

你确定你不是指FBO? VBOs没有与屏幕相同的尺寸(默认帧缓冲区)技术上,FBO也没有尺寸,但是FBO附件可以。 – bcrist

+0

@bcrist你应该在评论好友之前阅读整个问题! ;) – Vallentin

+0

@Vallentin我做了......你怎么觉得我没有? – bcrist

回答

1

VBOs只是专用于保存顶点数据的内存池。没有更多,没有更多。完全可以用单独的几何数据填充单个VBO。甚至可以在一个VBO中使用具有不同数据布局的多个数据集。

只有当您使用gl…Pointer函数将偏移量指定给顶点属性时,才会添加一些含义。然后右边的gl…Draw调用将使OpenGL获取VBO的数据并提交它们进行绘制。

这是没有更多,也没有少。那么,为什么我要告诉你这个?因为“VBO比屏幕大”的概念是没有意义的。由VBO中的数据描述的几何形状的部分可能在剪辑区域之外。 OpenGL老实说不关心。它会像所有其他数据一样对待。只有在顶点变换阶段之后,如果原始图像完全位于剪切区域之外,则它将在光栅化过程中被忽略。但它会穿过整个顶点设置阶段,因此消耗计算能力。

VBO会占用大部分VRAM吗?

甲VBO 的VRAM(专用于保持顶点数据)的一部分。这就是它的重点。 OpenGL缓冲对象是从快速内存保留的内存池(并且对于所有实际的手段,快速内存等于VRAM)。期。

+0

谢谢你清理那个! – thetheodor