2012-06-25 83 views
0

我使用的像素颜色挑选摸出我点击了其中的OpenGL对象,只要我打开GLKViewDrawableMultisample4X在视图它出色的作品IOS GLKit:图灵GLKViewDrawableMultisample4X停止对象采摘

,采摘停止工作?

我试着打开和关闭,当我触摸屏幕,但只能工作一次。

采摘代码:

GLKView *glkView = (GLKView*)[self view]; 
    UIImage *snapshot = [glkView snapshot]; 
    GLKVector4 colour = [snapshot pickPixelAtX:xPos Y:yPos]; 

@implementation UIImage (NDBExtensions) 

- (GLKVector4)pickPixelAtX:(NSUInteger)x Y:(NSUInteger)y { 

    CGImageRef cgImage = [self CGImage]; 
    size_t width = CGImageGetWidth(cgImage); 
    size_t height = CGImageGetHeight(cgImage); 

    if ((x < width) && (y < height)) 
    { 
     CGDataProviderRef provider = CGImageGetDataProvider(cgImage); 
     CFDataRef bitmapData = CGDataProviderCopyData(provider); 
     const UInt8* data = CFDataGetBytePtr(bitmapData); 
     size_t offset = ((width * y) + x) * 4; 

     UInt8 b = data[offset+0]; 
     UInt8 g = data[offset+1]; 
     UInt8 r = data[offset+2]; 
     UInt8 a = data[offset+3]; 

     CFRelease(bitmapData); 

     return GLKVector4Make(r, g, b, a); 

    } 
    return GLKVector4Make(0,0,0,0); 
} 

回答