我試圖從一個OpenGL紋理數組複製一個切片到另一個。如果可能的話,我想在GPU上執行此操作,而不從CPU重新提交任何內容。 (這在D3D中很容易做到,但我是現代OpenGL的新手。)OpenGL紋理陣列圖層數據副本
基於谷歌和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);
是的,這正是我需要的,謝謝。 –