从一个纹理复制数据到另一个纹理 - OpenGL

4
我将在安卓上使用SurfaceTexure渲染我的相机预览。这个SurfaceTexture绑定到目标GL_TEXTURE_EXTERNAL_OES。 我想从这个SurfaceTexture对象复制纹理数据到我的自定义OpenGL纹理,它绑定到GL_TEXTURE_2D
我的onFrameAvailable回调如下:
@Override
public void onFrameAvailable(final SurfaceTexture surfaceTexture) {
    glView.queueEvent(new Runnable() {
        @Override
        public void run() {
            surfaceTexture.updateTexImage();
            //TODO: Copy this texture to the custom texture
        }
    });
}

我已经创建了自定义纹理对象。
请问有谁能帮我完成复制部分的操作?
1个回答

3

通常的方法是将纹理绑定到颜色附件,然后选择该FBO为活动状态,并使用glCopyTexImage从FBO复制到目标纹理。


你能给我提供一些OpenGL的伪代码吗? - omerjerk
顺便问一下,你有没有考虑到这一点,即两个纹理绑定到不同的目标? - omerjerk
1
我在评论中添加了一个链接,指向https://dev59.com/nojca4cB1Zd3GeqPz6qC中的答案--它展示了在Android应用程序中设置FBO。相关的活动是将场景渲染到FBO,然后基本上将该纹理复制两次(一次显示,一次视频编码器)。我认为您想要做类似的事情,即将外部纹理全屏渲染到FBO,然后根据需要使用支持纹理。 - fadden
@omerjerk:每个纹理绑定到哪个目标并不重要。FBO充当适配器的作用。 - datenwolf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接