2016-12-26 7 views
1

하나의 OpenGL 텍스처 배열에서 다른 텍스처로 슬라이스를 복사하려고합니다. 가능한 경우 CPU에서 아무것도 다시 제출하지 않고 GPU에서이 작업을 수행하고 싶습니다. (이것은 D3D에서 매우 쉽게 할 수 있습니다. 그러나 저는 현대 OpenGL에 익숙하지 않습니다.)OpenGL 텍스처 배열 레이어 데이터 복사본

google과 StackOverflow 검색을 기반으로 할 수있는 가장 가까운 것은 다음과 같습니다. 이 과 거의 동일하지만 소스 배열의 첫 번째 슬라이스 (대상 배열의 올바른 슬라이스) 만 복사합니다. glFramebufferTexture3D를 사용하여 소스 슬라이스 (주석 처리 된 행)를 지정할 수 있었지만 GL_TEXTURE_3D를 사용하는 경우 GL_INVALID_OPERATION을 사용하여 GL_TEXTURE_2D_ARRAY를 사용하면 GL_INVALID_ENUM이 생성됩니다.

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); 

답변

3

하나의 OpenGL 텍스처 배열에서 다른 텍스처 배열로 슬라이스를 복사하려고합니다.

다음 함수는 you should be using is glCopyImageSubData입니다. glCopyTextureSubImage프레임 버퍼. glCopyImageSubData은 한 텍스처에서 다른 텍스처로 복사합니다.

+0

그래, 그게 바로 내가 필요로하는 것, 감사합니다. –