2

我有一个纹理多边形网格,我计划根据用户的各种输入进行移动。例如:用户可以在各个方向上移动顶点。但是顶点的数量和纹理坐标将始终保持不变。

这是使用 GL_STATIC_DRAW 的好情况,还是我应该使用其他东西,比如 GL_STREAM_DRAW?

4

2 回答 2

1

我建议不要在每次移动顶点时都更新 VBO,而是建议使用转换。使用变换,您可以通过简单地将变换矩阵乘以位置向量来创建一个可以平移、旋转或缩放顶点的矩阵。这种乘法可以在带有 GLSL 着色器的显卡上完成。使用此方法,您的顶点缓冲区将永远不必更改。

我建议阅读这篇文章以获取有关如何在 OpenGL 中使用转换的更多信息:https ://open.gl/transformations

于 2014-12-31T20:26:08.990 回答
0

不,您的情况不是使用 GL_STATIC_DRAW 的好案例。正如 h4lcOn 的链接建议您应该使用动态或流。尽管如果我正确理解您要做什么,我什至根本不会使用 VBO。如果您在每个绘制调用中为简单多边形推送坐标,则不会有太多开销(如果有的话)。如果您有大量多边形或在单个帧中使用相同的顶点数据进行大量绘制调用,请使用 VBO。

于 2013-04-24T09:55:42.430 回答