IOSではQRコードをスキャンするためにAVCaptureDevice
を使用しています。 AVCaptureMetadataOutput
を使用してカメラの出力をコードに渡してQRコードを認識し、現在はOpen GLビューとは別のビューとしてカメラを表示しています。しかし、カメラプレビュー上に他のグラフィックスを表示したいので、Open GLテクスチャの1つにカメラデータをロードしたいと考えています。IOSのカメラデータをテクスチャにアップロードする
だから、我々はキャプチャデバイスとビューを初期化するために使用している。これは(下)のコードであるカメラから
を生RGBデータを取得する方法があります。
RGBデータにアクセスするためにこれを変更してGLテクスチャの1つにロードするにはどうすればよいですか?私たちは、IOSは、どのテクスチャキャッシュをサポートしているので、あなたは、テクスチャとしてそれを作るために、直接RGBカメラのフレームにアクセスする必要はありませんC++/Objective Cのに
おかげ
ショーン・サザン・
self.captureSession = [[AVCaptureSession alloc] init];
NSError *error;
// Set camera capture device to default and the media type to video.
AVCaptureDevice *captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
// Set video capture input: If there a problem initialising the camera, it will give am error.
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:captureDevice error:&error];
if (!input)
{
NSLog(@"Error Getting Camera Input");
return;
}
// Adding input souce for capture session. i.e., Camera
[self.captureSession addInput:input];
AVCaptureMetadataOutput *captureMetadataOutput = [[AVCaptureMetadataOutput alloc] init];
// Set output to capture session. Initalising an output object we will use later.
[self.captureSession addOutput:captureMetadataOutput];
// Create a new queue and set delegate for metadata objects scanned.
dispatch_queue_t dispatchQueue;
dispatchQueue = dispatch_queue_create("scanQueue", NULL);
[captureMetadataOutput setMetadataObjectsDelegate:self queue:dispatchQueue];
// Delegate should implement captureOutput:didOutputMetadataObjects:fromConnection: to get callbacks on detected metadata.
[captureMetadataOutput setMetadataObjectTypes:[captureMetadataOutput availableMetadataObjectTypes]];
// Layer that will display what the camera is capturing.
self.captureLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.captureSession];
[self.captureLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
gCameraPreviewView= [[[UIView alloc] initWithFrame:CGRectMake(gCamX1, gCamY1, gCamX2-gCamX1, gCamY2-gCamY1)] retain];
[self.captureLayer setFrame:gCameraPreviewView.layer.bounds];
[gCameraPreviewView.layer addSublayer:self.captureLayer];
UIViewController * lVC = [[[UIApplication sharedApplication] keyWindow] rootViewController];
[lVC.view addSubview:gCameraPreviewView];