Opengl 渲染比屏幕大的VBO,

Opengl 渲染比屏幕大的VBO,,opengl,lwjgl,tiles,vbo,Opengl,Lwjgl,Tiles,Vbo,假设我有一个比包含平铺的屏幕更大的VBO,我可以在不损失任何性能的情况下绘制整个VBO吗,或者有没有一种方法只绘制VBO的一个子部分来填充屏幕?VBO会占用VRAM的大部分吗?VBO的优点在于速度 VBO只是专用于保存顶点数据的内存池。不多不少。完全可以用单独的几何图形数据填充单个VBO。在一个VBO中甚至可以有多个具有不同数据布局的数据集 只有当您使用gl…Pointer函数将偏移指定到VBO中的顶点属性时,您才能添加一些含义。然后,右侧的gl…Draw调用将使OpenGL获取VBOs的数据并

假设我有一个比包含平铺的屏幕更大的VBO,我可以在不损失任何性能的情况下绘制整个VBO吗,或者有没有一种方法只绘制VBO的一个子部分来填充屏幕?VBO会占用VRAM的大部分吗?VBO的优点在于速度

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

只有当您使用
gl…Pointer
函数将偏移指定到VBO中的顶点属性时,您才能添加一些含义。然后,右侧的
gl…Draw
调用将使OpenGL获取VBOs的数据并将其提交绘制

这不多也不少。那我为什么要告诉你这些?因为“VBO比屏幕大”的概念毫无意义。VBO中的数据所描述的几何体部分可能位于剪裁区域之外。OpenGL真的不在乎。它将与所有其他数据一样处理。只有在顶点变换阶段之后,如果基本体完全位于剪裁区域之外,它将从光栅化中忽略。但它将通过整个顶点设置阶段,因此会消耗计算能力

VBO会占用VRAM的大部分吗


VBO是VRAM的一部分(专用于保存顶点数据)。这就是问题的关键所在。OpenGL缓冲区对象是从快速内存中保留的内存池(实际上,快速内存等于VRAM)。句号。

你确定你不是指FBO吗?VBO没有与屏幕相同的尺寸(默认帧缓冲区)。从技术上讲,FBO也没有尺寸,但FBO附件有尺寸。@b请在评论buddy之前阅读整个问题!;)@Vallentin我做了。。。你为什么认为我没有?@b克里斯特因为他问的与FBO无关,他不是指FBO,他显然是指VBO,这个问题很有道理。@Vallentin不,这个问题没有道理。正如我在评论和datenwolf的回答中提到的,VBO不能“比屏幕大”。不能将以字节为单位的标量值与以像素为单位的2分量向量进行比较。VBO中包含的几何体的范围也不能与屏幕进行比较,因为顶点在光栅化之前总是使用至少一个矩阵进行变换,很少有例外。此外,“瓷砖”通常指纹理贴图。VBO与纹理没有连接,但纹理可以附着到FBO。