特定のピクセルの周りに8ピクセルをサンプリングし、これからスレッシュホールドルーチンで使用する情報の束を計算したいと思っています。適切にサンプリングする方法glslのtexture2DのtextureCoordinate
これは、iOSでglsl頂点シェーダーとフラグメントシェーダーを使用しています。ここで
は、フラグメントシェーダからの私のサンプリングコードです:
p00 = texture2D(videoFrame, textureCoordinate+vec2(-1.0*extent, -1.0*extent));
p01 = texture2D(videoFrame, textureCoordinate+vec2(0.0, -1.0*extent));
p02 = texture2D(videoFrame, textureCoordinate+vec2(+1.0*extent, -1.0*extent));
p10 = texture2D(videoFrame, textureCoordinate+vec2(-1.0*extent, 0.0));
p11 = texture2D(videoFrame, textureCoordinate);
p12 = texture2D(videoFrame, textureCoordinate+vec2(+1.0*extent, 0.0));
p20 = texture2D(videoFrame, textureCoordinate+vec2(-1.0*extent, +1.0*extent));
p21 = texture2D(videoFrame, textureCoordinate+vec2(0.0, +1.0*extent));
p22 = texture2D(videoFrame, textureCoordinate+vec2(+1.0*extent, +1.0*extent));
範囲は、現在、20.0に設定ちょうど数、です。私はサンプリングを合理的にローカルで実行したい。
これは正常にコンパイルされますが、私のルーチンの結果に基づいて、これは現在のピクセルの周りのピクセルをサンプリングするのではなく、行に沿ってサンプリングするサンプリングピクセルのようです。
どのように私はこれを解決できますか?
これが動作するかわからないその他の理由は、AppleがiOSのドキュメントに記載していることですが、これは画像単位でパッケージ化され、regionofinterest関数が使用されるべきだと述べています。可能であれば、glslシェーダですべてを維持することをお勧めします。
私はImageUnitsが異なっていて、あなた自身のImageUnitをiOSに書き込むことはできないので、無視することができますそれ。 – user1118321
こんにちは - それは私が意図したものでした。北、南、東などの20ピクセルをサンプリングすることができます。ただし、iPhone上でシェーダを実行すると、行ではなく列でのみサンプリングされるように見えます。これはGPUがピクセルを処理する順序と何か関係がありますか? –
サンプリング元のオブジェクトのテクスチャ座標は?テクスチャ座標のY値が同じ場合、そのようなことが起こります。 – user1118321