頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


CIImageオブジェクトの上下反転ができない

グレーのMTLTextureからCIImageを作成する
↑この続き。フロントカメラで得たMTLTextureから作成したCIImageの上下反転をしたい。
CGAffineTransform transform = CGAffineTransformMakeScale(1.0 , -1.0);
transform = CGAffineTransformTranslate(transform, 0, mtlTexture.height);

ciimage = [ciimage imageByApplyingTransform:transform];
↑このような処理でCIImageオブジェクトを上下反転させることができる(※1)ようなのだが、、、

The image extent and destination extent do not intersect.
↑このようなログが出てきて何も表示されない、、、なぜだー!?



少し戻って、確実な画像について確認してみた。
UIImage *uiimage = [UIImage imageNamed:@“hoge.png"];
CIImage *ciimage = [CIImage imageWithCGImage:uiimage.CGImage];
↑こんな感じでUIImageオブジェクトからCIImageを一度作成し、それをUIImage→UIImageViewとして画面表示してみたところ、、、

画像表示結果1

↑表示された。
次にCIImageを先ほどの方法で反転させると、、、

[CIContext(CIRenderDestination) _startTaskToRender:toDestination:forPrepareRender:error:] The image extent and destination extent do not intersect.
↑というワーニングが出るだけで画面には全く何も表示されない。

CGAffineTransform transform = CGAffineTransformMakeScale(1.0 , -1.0);
//transform = CGAffineTransformTranslate(transform, 0, uiimage.height);
transform = CGAffineTransformTranslate(transform, 0, -uiimage.height);

ciimage = [ciimage imageByApplyingTransform:transform];
↑エラーメッセージからするとずらし方がおかしい?と、試しに反転後の移動量をマイナス側にすると

画像表示結果2

↑上下反転して表示された。え?y軸どっち向いてるの、、、?


それじゃあ最初のMTLTextureのとこもマイナス側にしたら、、、
何も表示されなかった(ワーニングなどもなし)。

もうなにがなんだか🤔

結局MTLTextureはそもそもコンピュートシェーダの出力なのでシェーダの出力前に上限反転して回避した、、、orz



※1 参考サイトはこちら
Metal逆引きレシピ - Qiita
スポンサーサイト




<< 半年以上前に設定してたIFTTTが動作した  TopPage  グレーのMTLTextureからCIImageを作成する >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/1305-c06edfff




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.