私は、GPUIImagePictureの対象となるさまざまなGPUIImageFiltersの値を操作するためのスライダーを設定しました。現在のチェーンオーダーは次のようになります。GPUImage - フィルタチェーンの順序は重要ですか?
self.gpuImagePicture = [[GPUImagePicture alloc] initWithImage:self.image];
[self.gpuImagePicture addTarget:self.toneCurveFilter];
[self.toneCurveFilter addTarget:self.exposureFilter];
[self.exposureFilter addTarget:self.constrastFilter];
[self.constrastFilter addTarget:self.saturationFilter];
[self.saturationFilter addTarget:self.highlightShadowFilter];
[self.highlightShadowFilter addTarget:self.whiteBalanceFilter];
[self.whiteBalanceFilter addTarget:self.gpuImageView];
[self.whiteBalanceFilter setInputRotation:[self gpuImageRotationModeForImage:self.image] atIndex:0];
[self.gpuImagePicture processImage];
トーンカーブフィルターを取り外すと、すべてがスムーズに機能します。私がトーンカーブフィルターだけを使用しても、私は問題はありません。上記の実装を使用すると処理が大幅に遅くなります。
メモリの管理と処理に関するトーンカーブフィルタを追加したとき、またはチェーンの残りの部分にトーンカーブフィルタを追加したときのフィルタチェーンの順序は、この設定をエッジに押し込むだけですか?
EDIT:
私はスライダーがフィルタ値を変更する方法を言及する価値があるかもしれません実現してきました。たとえば、露出スライダを移動すると、次のコードがトリガされます。
[self.exposureFilter setExposure:sender.value];
[self.gpuImagePicture processImage];
プロファイリングなしでは、何かを言うのは難しいです。あなたはGPUをプロファイルしようとしましたか? –