我正在尝试将切片从一个openGL纹理数组复制到另一个。我想在GPU上执行此操作,而无需从CPU重新提交任何内容。(这在D3D中很容易做到,但我是现代OpenGL的新手。)
根据Google和Stackoverflow搜索,我能够获得的最接近。此几乎有效,除了它仅从源数组中的 first 切片复制(到目标数组的正确切片)中。我尝试使用glframebuffertexture3d,以便指定源切片(注释行),但是如果我使用gl_invalid_enum,如果我使用gl_texture_2d_array进行textArget参数,则会生成gl_invalid_operation,如果我使用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纹理阵列复制到另一个。
然后您应该使用的功能是glCopyImageSubData
。glCopyTextureSubImage
从 framebuffer 复制。glCopyImageSubData
从一个纹理复制到另一种纹理。
正确命令将2D数组纹理的特定层连接到framebuffer是glFrameBufferTextureLayer
。