2

GPUImageTwoPassFilter からサブクラス化して、画像に対して 2 つのフラグメント シェーダーを連続して効果的に実行できるが、すべてのコードなどを 1 つのクラスに限定できるというのが私の印象です (そして、この質問への回答がそれを裏付けているようです)。ただし、私の実験では、2 番目のフラグメント シェーダーがコンパイルされているようには見えず、ましてや実行されているようには見えません。以下の例は、問題なくビルドおよび実行されます。結果のイメージは、単一シェーダー クラスで最初のフラグメント シェーダーのみが実行された場合と同じように見えます。

ここで何がうまくいかないのでしょうか?GPUImageTwoPassFilter をサブクラス化する GPUImage コード ベースで見つけることができるすべての例が、(GPUImageGaussianBlurFilter のように) 各パスに同じフラグメント シェーダー プログラムを単純に使用していることは役に立ちません。

#import "BFTwoPassTest.h"

NSString *const kBFTwoPassTestFirstFragmentShaderString = SHADER_STRING
(
 varying highp vec2 textureCoordinate;
 uniform sampler2D inputImageTexture;

 void main()
 {
     lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);
     gl_FragColor = vec4(1.0, textureColor.g, textureColor.b, 1.0);
 }
 );


NSString *const kBFTwoPassTestSecondFragmentShaderString = SHADER_STRING
(
 varying highp vec2 textureCoordinate;
 uniform sampler2D inputImageTexture;

 void main()
 {
     This should be an obvious syntax error.
 }
 );


@implementation BFTwoPassTest

- (id)init {
    self = [self initWithFirstStageFragmentShaderFromString:kBFTwoPassTestFirstFragmentShaderString secondStageFragmentShaderFromString:kBFTwoPassTestSecondFragmentShaderString];
    if (self) {

    }
    return self;
}


@end
4

1 に答える 1

1

おっと、GPUImageTwoPassFilter.m の 55 行目にバグがありました。次の行:

if (!(self = [self initWithFirstStageVertexShaderFromString:kGPUImageVertexShaderString firstStageFragmentShaderFromString:firstStageFragmentShaderString secondStageVertexShaderFromString:kGPUImageVertexShaderString secondStageFragmentShaderFromString:firstStageFragmentShaderString]))

になるはずだった

if (!(self = [self initWithFirstStageVertexShaderFromString:kGPUImageVertexShaderString firstStageFragmentShaderFromString:firstStageFragmentShaderString secondStageVertexShaderFromString:kGPUImageVertexShaderString secondStageFragmentShaderFromString:secondStageFragmentShaderString]))

これを指摘してくれてありがとう。今すぐリポジトリで修正する必要があります。ただし、将来的には、このような特定のフレームワークの問題を、ここではなくプロジェクトの GitHub の問題ページに投稿することを提案できますか?

于 2013-02-15T21:50:14.850 に答える