Мне нравится загружать текстуру, используя класс Apple Texture2D. Создайте квад (два треугольника, шесть вершин), который отображается в углах экрана. Затем вы сопоставляете координаты текстуры с вершинами, передаете это glDrawArrays и идете. На самом деле у меня есть класс, который берет кадр в координатах CG, преобразует его в координаты OpenGL и затем рисует изображение в кадре.
Допустим, у вас есть такая структура:
struct {
GLfloat x; // OpenGL X Coordinate
GLfloat y; // OpenGL Y Coordinate
GLfloat z; // OpenGL Z Coordinate
GLfloat s; // Texture S Coordinate
Glfloat t; // Texture T Coordinate
} vertexData;
И массив данных вершин, подобный этому:
struct vertexData verts[6];
И у вас есть объект Texture2D:
texture = [[Texture2D alloc] initWithImage:[UIImage imageNamed:image] filter:filter pixelFormat:pixelFormat];
Итак, теперь вам нужно заполнить массив вершин. Предполагая, что 3D, x range [-1, 1] и y range [-1, 1], origin для z, вы бы инициализировали свои вершины следующим образом:
verts[0].x = verts[1].x = verts[5].x = -1.0;
verts[2].x = verts[3].x = verts[4].x = 1.0;
verts[0].y = verts[2].y = verts[4].y = 1.0;
verts[1].y = verts[3].y = verts[5].y = -1.0;
verts[0].z = verts[1].z = verts[2].z = 0.0;
verts[3].z = verts[4].z = verts[5].z = 0.0;
verts[0].s = verts[1].s = verts[5].s = tlxf;
verts[2].s = verts[3].s = verts[4].s = trxf;
verts[0].t = verts[2].t = verts[4].t = ttyf;
verts[1].t = verts[3].t = verts[5].t = tbyf;
Наконец, вам нужно нарисовать:
glBindTexture(GL_TEXTURE_2D, texture.name);
glVertexPointer(3, GL_FLOAT, sizeof(struct vertexData), &verts[0].x);
glTexCoordPointer(2, GL_FLOAT, sizeof(struct vertexData), &verts[0].s);
glDrawArrays(GL_TRIANGLES, 0, 6);
Я опускаю любые подробности о настройке OpenGL. Я полагаю, вы сделали это, если вы зашли так далеко.
При работе в OpenGL нужно учитывать массу ограничений производительности и памяти, но я бы не советовал слишком беспокоиться о них. Как только он заработает, профилируйте его с помощью инструмента OpenGL, чтобы увидеть, есть ли какие-либо проблемы с производительностью, а затем устраните их.
У Apple действительно хороший документ, описывающий лучшие практики, а также есть несколько полезных вопросов по SO. Я уверен, что вы сможете их искать, как только узнаете, с чем вы столкнулись (если что).