2 つの連続するカメラ フレームを同時にシェーダーに渡すことができません。
私は CVOpenGLESTextureCacheCreateTextureFromImage を使用してテクスチャを生成しており、2 つのテクスチャを同時にシェーダーに送信する GLCameraRipple サンプル アプリとほぼ同じプロセスに従っています。しかし、私のものは機能していません。どの順序で送信しても、一度に 1 つしか取得できません。
実際、シェーダー内から texture2D を呼び出す場合、どのテクスチャ参照を指定しても問題ありません。常に同じテクスチャをサンプリングします。
私はこれに夢中になっています。試した:
1) テクスチャごとに異なるテクスチャ キャッシュを使用する
2) glActiveTexture(GL_TEXTURE0) & glActiveTexture(GL_TEXTURE1) 各テクスチャを作成する前に、それぞれ
3) glUniform1i(TEXTURE_PREV, 0); & glUniform1i(TEXTURE_NEXT,1);
4) glUniform1i(TEXTURE_PREV, CVOpenGLESTextureGetName(prevTextureRef)); & glUniform1i(TEXTURE_NEXT,CVOpenGLESTextureGetName(nextTextureRef));
5) (シェーダーで) 均一な sampler2D framePrev の前にレイアウト (バインディング = 0) を追加します。
私は OpenGLES2 にかなり慣れていないので、この呼び出しが何をするのかわかりませんが、それなしでは何も機能しません:
glFramebufferTexture2D(GL_FRAMEBUFFER,
GL_COLOR_ATTACHMENT0,
GL_TEXTURE_2D,
CVOpenGLESTextureGetName(nextTextureRef),
0);
何か案は?