4

ビデオを OpenGL サーフェスとしてレンダリングする GL_OES_EGL_image_external メソッドを使用する Android 4.0 アプリケーションがあります。それはうまくいきます。さらに、その上にいくつかのパッチをストレッチ/ワープしたいと思います。私は現在、それらの領域の上にいくつかのクワッドでいくつかの追加のシェーダーを使用してワープしたい領域をシェーディングしています。基になる色を取得する方法にこだわっています。ビデオ クワッドの上にあるクワッドのシェーダーは、下にあるイメージをどのようにゆがめますか? 出来ますか?

4

1 に答える 1

3

私は iOS を使用していますが、私のアプリは非常に似たようなことを行います。

私がどのようにそれを達成したかは、Apple のサンプル コードに基づいています(特に RippleModel.m を見てください)。どのように機能するかというと、ビデオ テクスチャ ビデオをクワッドではなく、高度にテッセレーションされたグリッドに配置するため、大量のテクスチャ座標を持つ大量の三角形が得られます。このグリッドの頂点をプログラムで作成し、さらに重要なことに、テクスチャ座標もプログラムで作成し、それらを配列に保持します。

フレームごとに、すべての頂点を繰り返し処理し、それぞれのテクスチャ座標を更新し、ユーザーが触れた場所と、周囲の頂点のテクスチャ オフセットの量に基づいて、波紋パターンで「ワープ」します。したがって、ジオメトリはまったく変更されず、シェーダーでワープを実行しません。すべてテクスチャ座標で行われます。シェーダーは、受け取った座標で直接テクスチャ ルックアップを行っているだけです。

したがって、このアプローチがニーズに合っているかどうかはわかりませんが、ワープが 2D でのみ発生し、ワープをテクスチャ座標調整として定義する方法を理解できる場合は、これが役立つ場合があります。

于 2012-10-20T02:15:48.707 に答える