나는 CPU에서 처리 할 CVPixelBufferRef 객체를 1 개 (또는 2 개) 가질 수 있으며 결과를 최종 CVPixelBufferRef에 배치합니다. CPU가 간신히 유지할 수 있기 때문에 대신 GLSL을 사용하여 GPU에서이 처리를하고 싶습니다 (라이브 비디오 프레임 임). 나는 이것이 가능한 "직접"(즉, 내 자신의 오픈 gl 코드를 작성하는 것) 가능하다는 것을 알고 있지만 (절대적으로 침투 할 수없는) 샘플 코드에서 보았을 때 그것은 미친 양의 일이었다.GPP 텍스처로 CVPixelBufferRef
1) GPUImage가 :
두 가지 옵션을 것 같다 이것은 멋진 라이브러리입니다,하지만 난 쉽게 원하는 것을 할 수 있다면 좀 불분명 해요. 다음과 같이 GPUImageRawDataInput에 CVPixelBufferRef에서
@{ (NSString *)kCVPixelBufferPixelFormatTypeKey : [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA],
(NSString*)kCVPixelBufferOpenGLESCompatibilityKey : [NSNumber numberWithBool:YES]};
그런 다음 데이터 전송 :이 코드를 사용하여 OpenGLES에게 호환 픽셀 버퍼를 요청했다 시도 우선
// setup:
_foreground = [[GPUImageRawDataInput alloc] initWithBytes:nil size:CGSizeMake(0,0)pixelFormat:GPUPixelFormatBGRA type:GPUPixelTypeUByte];
// call for each frame:
[_foreground updateDataFromBytes:CVPixelBufferGetBaseAddress(foregroundPixelBuffer)
size:CGSizeMake(CVPixelBufferGetWidth(foregroundPixelBuffer), CVPixelBufferGetHeight(foregroundPixelBuffer))];
을하지만, 내 CPU 사용률이 27에 7 %에서 간다 그 라인 (아무 처리도 또는 아무것도)과 아이폰 5S 그냥 %. 이것은 CPU에 어떤 복사 작업이 진행 중이거나 다른 작업이 잘못되었다는 것을 의미합니다. 내가 놓친 게 있니?
2) OpenFrameworks : OF는 일반적으로 이러한 유형의 작업에 사용되며 OF 프로젝트는 GLSL을 사용하도록 쉽게 설정할 수 있습니다. 그러나이 솔루션에 대한 두 가지 질문이 남아 있습니다. 1. Openframeworks를 라이브러리로 사용할 수 있습니까? 아니면 OpenGL 기능을 사용하기 위해 전체 앱을 다시 잡아야합니까? 실제로 처음부터 시작하지 않고 OF 응용 프로그램을 만들지 않고이를 수행 할 수있는 방법을 보여주는 자습서 나 문서는 표시되지 않습니다. 2. CVPixelBufferRef를 텍스처로 사용할 수 있습니까?
iOS 7 이상을 타겟팅하고 있습니다.
나는이 질문을 1 년 전에 게시 했으므로 세부 사항을 기억하지 않습니다. 나는 당신이 일하기를 얻은 것처럼 보이기 때문에 앞으로 나아가고 당신의 답을 옳은 것으로 표시 할 것입니다! –