OpenGL ES でシェーダーを使用する方法を学んでいます。
例として: 現在のビデオ フレームを取得してグレースケールにするプレイグラウンド フラグメント シェーダーを次に示します。
varying highp vec2 textureCoordinate;
uniform sampler2D videoFrame;
void main() {
highp vec4 theColor = texture2D(videoFrame, textureCoordinate);
highp float avrg = (theColor[0] + theColor[1] + theColor[2]) / 3.0;
theColor[0] = avrg; // r
theColor[1] = avrg; // g
theColor[2] = avrg; // b
gl_FragColor = theColor;
}
theColor
現在のピクセルを表します。この同じ座標で前のピクセルにもアクセスできると便利です。
好奇心のために、現在のピクセルの色を前のレンダリング フレームのピクセルの色に加算または乗算したいと思います。
以前のピクセルを保持し、フラグメント シェーダーに渡して何かを行うにはどうすればよいですか?
注: iPhone では OpenGL ES 2.0 です。