2010-12-10 3 views

ответ

1

Если вы хотите убить время, применяя изображение как текстуру, вы не будете использовать glReadPixels. Вы можете сделать это непосредственно из UIImage вместо:

void pixelExamine(UIImage *image) 
    { 
    CGImageRef colorImage = image.CGImage; 
    int width = CGImageGetWidth(colorImage); 
    int height = CGImageGetHeight(colorImage); 

    uint32_t *pixels = (uint32_t *) malloc(width * height * sizeof(uint32_t)); 

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
    CGContextRef context = CGBitmapContextCreate(pixels, width, height, 8, width * sizeof(uint32_t), colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedLast); 
    CGContextDrawImage(context, CGRectMake(0, 0, width, height), colorImage); 

    int x; 
    int y; 
    uint8_t *rgbaPixel; 

    for(y = 0; y < height; y++) 
     { 
     rgbaPixel = (uint8_t *) &pixels[y * width]; 

     for(x = 0; x < width; x++, rgbaPixel+=4) 
      { 
      // rgbaPixel[0] = ALPHA 0..255 
      // rgbaPixel[3] = RED 0..255 
      // rgbaPixel[2] = GREEN 0..255 
      // rgbaPixel[1] = BLUE 0..255 
      } 
     } 

    CGContextRelease(context); 
    CGColorSpaceRelease(colorSpace); 
    free(pixels); 
    } 
Смежные вопросы