Создайте подкласс UIView и переопределите метод draw: (CGRect). Используйте Converting RGB data into a bitmap in 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;
затем в методе 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);
Я вижу. Спасибо за это. Я все еще не могу поверить, что нет версии Perlin Noise для Objective-C/OpenGL ES ... – Andre
Функции c и классы C++ могут использоваться в objc. – f3r3nc