0

ピクセル カラー ピッキングを使用して、クリックした 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);
}
4

1 に答える 1

0

this のコードを使用してこれを修正できました

iOS での OpenGL ES 2.0 オブジェクト ピッキング

非常に良い答えです。基本的にGLKViewDrawableMultisample4Xはピッキングでは機能しないため、別のレンダーバッファーを作成する必要があります

于 2012-06-25T13:06:44.677 に答える