我正在使用像素颜色选择来确定我点击了哪个OpenGL对象并且它的工作非常出色
一旦我在视图中打开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);
}
答案 0 :(得分:0)
我设法使用此
中的代码解决了这个问题OpenGL ES 2.0 Object Picking on iOS
非常好的答案,基本上GLKViewDrawableMultisample4X不能用于拾取,所以你需要制作另一个渲染缓冲区