CIImageオブジェクトの上下反転ができない
グレーのMTLTextureからCIImageを作成する
↑この続き。フロントカメラで得たMTLTextureから作成したCIImageの上下反転をしたい。
The image extent and destination extent do not intersect.
↑このようなログが出てきて何も表示されない、、、なぜだー!?
少し戻って、確実な画像について確認してみた。

↑表示された。
次にCIImageを先ほどの方法で反転させると、、、
[CIContext(CIRenderDestination) _startTaskToRender:toDestination:forPrepareRender:error:] The image extent and destination extent do not intersect.
↑というワーニングが出るだけで画面には全く何も表示されない。

↑上下反転して表示された。え?y軸どっち向いてるの、、、?
それじゃあ最初のMTLTextureのとこもマイナス側にしたら、、、
何も表示されなかった(ワーニングなどもなし)。
もうなにがなんだか🤔
結局MTLTextureはそもそもコンピュートシェーダの出力なのでシェーダの出力前に上限反転して回避した、、、orz
※1 参考サイトはこちら
Metal逆引きレシピ - Qiita
↑この続き。フロントカメラで得たMTLTextureから作成したCIImageの上下反転をしたい。
CGAffineTransform transform = CGAffineTransformMakeScale(1.0 , -1.0);↑このような処理でCIImageオブジェクトを上下反転させることができる(※1)ようなのだが、、、
transform = CGAffineTransformTranslate(transform, 0, mtlTexture.height);
ciimage = [ciimage imageByApplyingTransform:transform];
The image extent and destination extent do not intersect.
↑このようなログが出てきて何も表示されない、、、なぜだー!?
少し戻って、確実な画像について確認してみた。
UIImage *uiimage = [UIImage imageNamed:@“hoge.png"];↑こんな感じでUIImageオブジェクトからCIImageを一度作成し、それをUIImage→UIImageViewとして画面表示してみたところ、、、
CIImage *ciimage = [CIImage imageWithCGImage:uiimage.CGImage];

↑表示された。
次に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];

↑上下反転して表示された。え?y軸どっち向いてるの、、、?
それじゃあ最初のMTLTextureのとこもマイナス側にしたら、、、
何も表示されなかった(ワーニングなどもなし)。
もうなにがなんだか🤔
結局MTLTextureはそもそもコンピュートシェーダの出力なのでシェーダの出力前に上限反転して回避した、、、orz
※1 参考サイトはこちら
Metal逆引きレシピ - Qiita
スポンサーサイト