2016-11-03 17 views
0

OpenGL ESを使用して、ランダムピクチャ(タイプノイズピクセル)を設定する必要があります。iOSでOpenGL ESを使用してランダムな画像を描画するには

//declare variable: 
    UIImage* myImage; 
    UIImageView *imageView; 
    CGRect rect; 

//function whitch drawing random pixel-array picture and display it on screen  ios-device; 
-(void)setPicture 
{ 
    if(imageView!=NULL) 
    { 
     //Addition removal imageView 
     [imageView removeFromSuperview]; 
     imageView = NULL; // 
    } 
    int width = 352; //sizes 
    int height = 288; 

    size_t bufferLength = width * height * 4; // 
    uint8_t* pixels = (uint8_t*)malloc(bufferLength); // 
    for (int i = 0; i < bufferLength/2; i++) { 
     pixels[i] = rand() % 255; //obtain random pixel array 
    } 

    CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB(); 

    CGContextRef ctx = CGBitmapContextCreate(pixels, width, height, 8, width * 4, space, kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedLast); // 

    CGImageRef toCGImage = CGBitmapContextCreateImage(ctx); 
    UIImage * uiimage = [[UIImage alloc] initWithCGImage:toCGImage]; //reflect pixel array to picture 

    CGImageRelease(toCGImage); 
    CGColorSpaceRelease(space); 
    CGContextRelease(ctx); 
    free(pixels); 

    myImage = uiimage; 
    // 

    rect = self.view.bounds; // 

    if(imageView == NULL) 
    { 
     imageView = [[UIImageView alloc] initWithFrame:rect]; 
     imageView.image = myImage; 
     [self.view addSubview:imageView]; 
     NSLog(@"NULL"); 
    } else 
    { 
     [imageView setNeedsDisplay]; 
     NSLog(@"Dewnull"); 
    } 
} 

私の機能の呼び出し後、同じ画像が画面に表示されます。

enter image description here

質問

それは、iOSがのOpenGL ESで画面上に類似した画像を設定することは可能ですか?それを作る方法?それは私の機能より速く動作するのだろうか?

答えて

0

'Procedural Textures: “Random” Noise'セクションを参照してください。それは速いですか? GPUがこのプロセスを容易に並列化できるので、ほぼ間違いなく、生成することができます。しかし、GPUからの読み込みは遅くなる可能性があります。メモリが統一されているため、iOSではそれほど多くはないと想像しています。プロファイルして参照してください。それはあなたがテクスチャを使って何をしているかによって異なります。

関連する問題