我无法将两个连续的相机帧同时传递给我的着色器。
我正在使用 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);
有任何想法吗?