我正在使用GLKit(OpenGL ES 2)为iOS制作游戏,并希望使用VBO和VAO,因为我认为它们可以提高性能(当我在其中测试我的应用时,Instruments会推荐它) )。
我有很多纹理对象,实际上并没有改变位置,大小,纹理等,所以我认为VBO会有所帮助。
目前我正在使用GLKVector2数组存储顶点和纹理坐标数据,我不太确定如何从这里转到VBO。
任何人都可以帮忙吗?
干杯, 缺口。
答案 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时,最后一个参数中的指针变为偏移量。