Iphone 如何为glReadPixels选择UIImage?

Iphone 如何为glReadPixels选择UIImage?,iphone,opengl-es,uiimage,Iphone,Opengl Es,Uiimage,我有一个50张图片的视图。图像可能重叠。我想(例如)选择图像编号33并查找像素颜色。我该怎么做? PS我使用glReadPixels 除非您想先将图像作为纹理应用,否则不会使用glReadPixels。您可以直接从UIImage执行此操作: void pixelExamine( UIImage *image ) { CGImageRef colorImage = image.CGImage; int width = CGImageGetWidth(colorImage);

我有一个50张图片的视图。图像可能重叠。我想(例如)选择图像编号33并查找像素颜色。我该怎么做?
PS我使用glReadPixels

除非您想先将图像作为纹理应用,否则不会使用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);
    }
void像素检查(UIImage*image)
{
CGImageRef colorImage=image.CGImage;
int width=CGImageGetWidth(彩色图像);
int height=CGImageGetHeight(彩色图像);
uint32_t*像素=(uint32_t*)malloc(宽度*高度*尺寸(uint32_t));
CGColorSpaceRef colorSpace=CGColorSpaceCreateDeviceRGB();
CGContextRef context=CGBitmapContextCreate(像素、宽度、高度、8、宽度*sizeof(uint32_t)、颜色空间、kCGBitmapByteOrder32Little | KCGimageAlphaPremultipledLast);
CGContextDrawImage(上下文、CGRectMake(0、0、宽度、高度)、彩色图像);
int x;
int-y;
uint8_t*rgbaPixel;
对于(y=0;y<高度;y++)
{
rgbaPixel=(uint8_t*)和像素[y*宽度];
对于(x=0;x