如何在GLKit for iOS中使用VBO?

时间:2012-04-08 02:11:02

标签: ios glkit

我正在使用GLKit(OpenGL ES 2)为iOS制作游戏,并希望使用VBO和VAO,因为我认为它们可以提高性能(当我在其中测试我的应用时,Instruments会推荐它) )。

我有很多纹理对象,实际上并没有改变位置,大小,纹理等,所以我认为VBO会有所帮助。

目前我正在使用GLKVector2数组存储顶点和纹理坐标数据,我不太确定如何从这里转到VBO。

任何人都可以帮忙吗?

干杯, 缺口。

1 个答案:

答案 0 :(得分:0)

您可以将它们直接传递给glBufferData (),如下所示:

GLKVector2    objects[k];
// ... Fill out your objects vertices in objects
GLuint buffer = 0;
glGenBuffers (1, &buffer);
glBindBuffer (GL_ARRAY_BUFFER, buffer);
glBufferData (GL_ARRAY_BUFFER, sizeof (objects), objects, GL_STATIC_DRAW);
glEnableClientState (GL_VERTEX_ARRAY);
glVertexPointer (2, GL_FLOAT, sizeof (GLKVertex2), 0);

这告诉OpenGL生成一个缓冲区并绑定它。 glBufferData()实际上将其上传到卡片中。对glVertexPointer ()的调用说明了您要从数组中开始拉顶点的位置。当您使用VBO时,最后一个参数中的指针变为偏移量。

编辑:对不起 - 填写了一些细节。有一个大脑放屁。 See here了解详情。