【问题标题】:OpenGL texture array layer data copyOpenGL纹理数组图层数据拷贝
【发布时间】:2016-12-26 20:53:31
【问题描述】:

我正在尝试将切片从一个 OpenGL 纹理数组复制到另一个。如果可能,我想在 GPU 上执行此操作,而无需从 CPU 重新提交任何内容。 (这在 D3D 中很容易做到,但我是现代 OpenGL 的新手。)

根据 google 和 StackOverflow 搜索,我能够得到的最接近的结果如下。这几乎有效,只是它只从源数组中的第一个切片复制(到目标数组的正确切片)。我尝试使用 glFramebufferTexture3D,这样我可以指定源切片(注释行),但是如果我使用 GL_TEXTURE_2D_ARRAY 作为 textarget 参数,则会生成 GL_INVALID_ENUM,如果我使用 GL_TEXTURE_3D,则会生成 GL_INVALID_OPERATION。

GLuint fb;
glGenFramebuffers(1, &fb);
glBindFramebuffer(GL_READ_FRAMEBUFFER, fb);

glFramebufferTexture(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, src_texture_handle, 0);
//glFramebufferTexture3D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_ARRAY, src_texture_handle, 0, src_slice);
glReadBuffer(GL_COLOR_ATTACHMENT0);
glCopyTextureSubImage3D(dst_texture_handle, 0, 0, 0, dst_slice, 0, 0, width, height);

glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
glDeleteFramebuffers(1, &fb);

【问题讨论】:

    标签: opengl textures opengl-4


    【解决方案1】:

    我正在尝试将切片从一个 OpenGL 纹理数组复制到另一个。

    然后是函数you should be using is glCopyImageSubDataglCopyTextureSubImage帧缓冲区 复制。 glCopyImageSubData 从一种纹理复制到另一种纹理。

    【讨论】:

      【解决方案2】:

      将二维数组纹理的特定层附加到帧缓冲区的正确命令是glFrameBufferTextureLayer

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-31
        • 2014-05-11
        • 2016-12-03
        • 2021-01-15
        相关资源
        最近更新 更多