Как использовать VBO в GLKit для iOS?

Я делаю игру для iOS, используя GLKit (OpenGL ES 2), и хотел бы использовать VBO и VAO, поскольку я думаю, что они значительно повысят производительность (и Instruments рекомендует это, когда я тестирую в нем свое приложение).

У меня есть много текстурированных объектов, которые на самом деле не меняют положение, размер, текстуру и т. д., поэтому я предполагаю, что VBO помогут.

На данный момент я использую массивы GLKVector2 для хранения данных координат вершин и текстур, и я не совсем уверен, как перейти отсюда к VBO.

Может кто-нибудь помочь с этим?

Привет, Ник.


person Nick Duffell    schedule 08.04.2012    source источник


Ответы (1)


Вы можете передать их непосредственно 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.

РЕДАКТИРОВАТЬ: Извините - заполнил некоторые детали. Имел пердеж мозга. Подробности см. здесь .

person user1118321    schedule 08.04.2012
comment
Однако этот метод не сохраняет объект буфера вершин для последующего использования, не так ли? - person Nick Duffell; 08.04.2012