CGBitmapContextCreate
및 CGContextDrawImage
을 사용하여 화면에 RGBA
데이터를 그립니다. 내가 malloc
에 (pixelBuffer
, ...)을 사용하여 bitmapcontext
을 만들고 거기에 데이터를 배치하려고하면이 작업이 정상적으로 작동합니다.CGBitmapContextGetData - 반환 된 메모리 블록에 데이터를 복사 할 수 없습니다.
그러나, 나는 자신의 메모리를 관리하는 코어 그래픽 싶습니다 그래서 CGBitmapContextCreate
에 NULL
을 통과 한 다음 CGBitmapContextGetData
를 호출하고 사용하여 상기 블록 내 RGBA
버퍼를 복사하여 사용되는 메모리 블록에 대한 포인터를 좀하고 싶습니다 memcpy
. 그러나 내 memcpy
이 실패합니다. 아래 내 코드를 참조하십시오. 내가 뭘 잘못하고 있는지 알기!
gtx = CGBitmapContextCreate(NULL, screenWidth, screenHeight, bitsPerComponent, bytesPerRow, colorSpace, kCGImageAlphaNoneSkipLast);
void *data = CGBitmapContextGetData(gtx);
memcpy(data, pixelBuffer, area*componentsPerPixel);
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGImageRef image = CGBitmapContextCreateImage(gtx);
CGContextTranslateCTM(currentContext, 0, screenHeight);
CGContextScaleCTM(currentContext, 1.0, -1.0);
CGContextDrawImage(currentContext, currentSubrect, image);
자신의 포인터를 전달하면 그걸 고수하지 않으시겠습니까? – nielsbot
null을 전달하는 것이 더 최적이라고 생각합니다. 드로잉 성능이 향상 될 수 있습니다. (이는 내 앱에 많은 영향을 미칩니다.) 더 중요한 점은, vm_copy가 실패하여 앱이 다운되는 경우가 종종 있습니다. 내 포인터 (내 직감)를 전달하는 것과 관련이 있다고 생각합니다. –
좋아, memcpy 오류가 무엇입니까? – nielsbot