Создайте подкласс UIView и переопределите метод draw: (CGRect). Используйте Преобразование данных RGB в растровое изображение в Objective-C ++ Cocoa , чтобы разумно создать CGImage из ваших данных и нарисовать это изображение в текущем контексте при рисовании.
CGContextDrawImage(UIGraphicsGetCurrentContext(), <#CGRect rect#>, <#CGImageRef image#>);
Если это неподвижное изображение, вы в порядке. если это анимация, это может быть не лучшим решением.
Познакомьтесь с OpenGL ES на iPhone.
Пример OpenGL ES для iPhone SDK - отличная отправная точка.
Изучите наложение текстур. Когда вы ознакомитесь с glTexImage2D, используйте его для загрузки своего изображения.
Пример можно легко расширить с помощью следующего:
имеют эти определения:
GLuint spriteTexture;
GLubyte *spriteData; // the perlin noise will be here
size_t width, height;
затем в методе init ESRenderer создайте пространство для текстуры:
- (id) init { ....
width = 512; // make sure the texture size is the power of 2
height = 512;
glGenTextures(1, &spriteTexture);
glBindTexture(GL_TEXTURE_2D, spriteTexture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, spriteData);
//free(spriteData); // free this if not used any more
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
Если шум периодически обновляется, обновите текстуру в методе рендеринга
- (void) render { .....
glBindTexture(GL_TEXTURE_2D, spriteTexture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, spriteData);