0

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);

何か案は?

4

0 に答える 0