所以,假设我有一个比包含图块的屏幕大的VBO,我可以绘制整个VBO而不会丢失任何性能,或者是否有一种方法只能绘制填充填充的VBO的子部分屏幕? VBO会占据VRAM的很大一部分吗? VBO的优点是速度。
答案 0 :(得分:1)
VBO只是专用于保存顶点数据的内存池。没有更多,没有更少。使用单独的几何数据填充单个VBO是完全可能的。甚至可以在一个VBO中拥有具有不同数据布局的多个数据集。
只有当您使用gl…Pointer
函数将偏移量分配到VBO到顶点属性时,才会添加一些含义。然后,正确的gl…Draw
调用将使OpenGL获取VBO的数据并提交它们以进行绘制。
它没有更多,也没有更少。那我为什么要告诉你呢?因为" VBO的概念大于屏幕" 是没有意义的。由VBO内的数据描述的几何形状的部分可以在剪切区域之外。 OpenGL老实说并不在意。它会像对待所有其他数据一样对待。只有在顶点变换阶段之后,如果图元完全位于剪切区域之外,它将从光栅化中省略。但它将通过整个顶点设置阶段,因此消耗计算能力。
VBO会占据VRAM的很大一部分吗?
VBO 是VRAM的一部分(专用于保存顶点数据)。这就是它的全部意义所在。 OpenGL缓冲区对象是从快速内存保留的内存池(对于所有实用方法快速内存等于VRAM)。周期。