我的情况是否适合使用GL_STATIC_DRAW?

时间:2013-04-24 07:54:08

标签: opengl opengl-es opengl-es-2.0

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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