私が使用しているのはvImageConvert_RGB888toARGB8888
とvImagePermuteChannels_ARGB8888
です。OPENGL ESはARGBをサポートしていないため、最初にRGB24からARGBに変更します。したがって、。を使用してARGBをBGRAに変更する必要がありvImagePermuteChannels_ARGB8888
ます。しかし、データを変更する必要がある場合、時間コストが高くなるので、より良い方法を持っている人はいますか?ありがとう!このような私のコード:
- (void)transformRGBToBGRA:(const UInt8 *)pict{
rgb.data = (void *)pict;
vImage_Error error = vImageConvert_RGB888toARGB8888(&rgb,NULL,0,&argb,NO,kvImageNoFlags);
if (error != kvImageNoError) {
NSLog(@"vImageConvert_RGB888toARGB8888 error");
}
const uint8_t permuteMap[4] = {3,2,1,0};
error = vImagePermuteChannels_ARGB8888(&argb,&bgra,permuteMap,kvImageNoFlags);
if (error != kvImageNoError) {
NSLog(@"vImagePermuteChannels_ARGB8888 error");
}
free((void *)pict);
}