我无法将两个连续的相机帧同时传递到我的着色器。
我正在使用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)(在着色器中)在uniform sampler2D framePrev之前添加布局(binding = 0);
我对OpenGLES2很陌生,我不知道这个调用是做什么的,但没有它没有任何作用:
glFramebufferTexture2D(GL_FRAMEBUFFER,
GL_COLOR_ATTACHMENT0,
GL_TEXTURE_2D,
CVOpenGLESTextureGetName(nextTextureRef),
0);
有什么想法吗?