0

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

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

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

有人能帮忙吗?

干杯,尼克。

4

1 回答 1

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 时,最后一个参数中的指针变为偏移量。

编辑:对不起 - 填写了一些细节。脑袋放了个屁。有关详细信息,请参见此处

于 2012-04-08T02:22:00.540 回答