0

我无法将两个连续的相机帧同时传递给我的着色器。

我正在使用 CVOpenGLESTextureCacheCreateTextureFromImage 来生成纹理,并且一直在遵循与 GLCameraRipple 示例应用程序相同的过程,它同时将两个纹理发送到着色器中。但是,我的不工作——无论我以什么顺序发送它们,我一次只能得到一个。

事实上,当我从着色器中调用 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)(在着色器中)在统一采样器2D framePrev之前添加布局(绑定= 0);

我对 OpenGLES2 还很陌生,我不知道这个调用是做什么的,但是没有它就什么都做不了: glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, CVOpenGLESTextureGetName(nextTextureRef), 0);

有任何想法吗?

4

0 回答 0