1

我有一个用于在屏幕上组成四边形的顶点的 VBO,当程序员请求调整图像大小时,我想更改它。

它不会经常更改,只有当(and if)有人要求调整图像大小时,所以我认为我不应该使用GL_STREAM_DRAW. VBO调用此函数时,也将已加载。

如何获取VBO数据并仅更改几个值?

4

1 回答 1

3

您可以使用glBufferSubData仅修改缓冲区对象的一部分。不过一般来说,您应该尝试将所有将要更改的对象收集到一个缓冲区中。这样,您可以一次更改所有这些,这将更有效率。特别是如果您使用适当的流技术

话说回来:

我有一个用于在屏幕上组成四边形的顶点的 VBO,当程序员请求调整图像大小时,我想更改它。

你不应该需要。只需在 X 和 Y 的 [-1, 1] 范围内传递一个四边形,不要通过矩阵对其进行转换。Quad 将有效地位于 NDC 空间中,系统将为您将其转换为窗口空间。只要您使用glViewport正确(无论如何您都必须这样做),屏幕大小的四边形不需要随屏幕大小而变化。

于 2013-08-27T05:05:35.927 回答