最近、CIImage に CIColorCube を設定してカスタム効果を作成しようとしています。これが私が今持っているものです:
uint8_t color_cube_data[8*4] = {
0, 0, 0, 1,
255, 0, 0, 1,
0, 255, 0, 1,
255, 255, 0, 1,
0, 0, 255, 1,
255, 0, 255, 1,
0, 255, 255, 1,
255, 255, 255, 1
};
NSData * cube_data =[NSData dataWithBytes:color_cube_data length:8*4*sizeof(uint8_t)];
CIFilter *filter = [CIFilter filterWithName:@"CIColorCube"];
[filter setValue:beginImage forKey:kCIInputImageKey];
[filter setValue:@2 forKey:@"inputCubeDimension"];
[filter setValue:cube_data forKey:@"inputCubeData"];
outputImage = [filter outputImage];
WWDC 2012 Core Image セッションを確認しましたが、まだ機能しません。Web もチェックしましたが、この問題に関して利用できるリソースはほとんどありません。上記の私のコードは、黒い画像を返すだけです。
Apple の開発者ライブラリには、次のように書かれています。
このフィルターは、RGB 空間から inputCubeData で定義された新しい色の値にマッピングを適用します。inputImage の各 RGBA ピクセルに対して、フィルタは R、G、および B の値を使用して、inputCubeData によって表される 3 次元テクスチャにインデックスを付けます。inputCubeData には、事前乗算された線形値を含む浮動小数点 RGBA セルが含まれます。データは、inputCubeDimension の数の xy 平面に編成され、各平面のサイズは inputCubeDimension によって異なります。入力ピクセル コンポーネント R と G は、それぞれ x と y のデータのインデックスに使用され、B は z のインデックスに使用されます。inputCubeData では、R コンポーネントが最も速く変化し、次に G、B と続きます。
しかし、これは私には意味がありません。どのようinputCubeData
にフォーマットする必要がありますか?