2014-11-13 4 views
0

texture arrays을 밉맵하는 방법을 이해하려고합니다. 텍스쳐 배열은 3 차원 구조입니다. 각 텍스처 2D는 glTexStorage3D에서 깊이 매개 변수를 가지며 주어진 텍스처를 배열 당 밉맵 수는 어떻게 지정합니까? 텍스처 당 밉맵 수를 다르게 지정할 수 있습니까?OpenGL 텍스처 2D 배열 및 밉맵

올바른 방법인가요?

glTexStorage3D(GL_TEXTURE_2D_ARRAY,10,GL_RGBA8,width,height,numTextures); 
glTexParameteri(GL_TEXTURE_2D_ARRAY,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR); 
glTexParameteri(GL_TEXTURE_2D_ARRAY,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D_ARRAY,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE); 
glTexParameteri(GL_TEXTURE_2D_ARRAY,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE); 
for(int i =0 ; i <numTextures;++i){ 

    glTexSubImage3D(GL_TEXTURE_2D_ARRAY,/*What goes here???*/, 0, 0, 0, width, height, /*What goes here?*/, GL_RGBA, GL_UNSIGNED_BYTE, data); 

} 

glGenerateMipmap(GL_TEXTURE_2D_ARRAY); 

glTexSubImage3D의 두 번째 매개 변수와 8 개의 매개 변수를 어떻게 전달해야할지 모르겠다. 두 번째 매개 변수가 여러 가지 밉맵과 현재 텍스처의 8 번째 깊이가되어야합니까?

답변

2

두 번째 매개 변수는로드하려는 텍스처의 밉맵 레벨입니다. 귀하의 경우, 밉맵을 생성하기 위해 GL에 의존하기를 원하므로 0입니다.

여덟 번째 매개 변수는 깊이입니다. 배열의 경우, 통과하는 레이어의 수를 의미합니다. 루프의 반복마다 단일 레이어를 전달하므로 1입니다.

그러나 다섯 번째 매개 변수는 전달할 데이터를 저장할 위치의 깊이 오프셋입니다. 사용자의 경우에는로드하는 레이어가 i입니다.

+0

또한 [www.opengl.org] (https://www.opengl.org/wiki/Array_Texture)의 예를 참조하십시오. – BDL

+1

@BDL : 예, 나는 그것에 연결하는 아이디어를 가지고 놀았지만 실제로는 아닙니다. (가장 자연스러운 방법이라고 생각 하듯이 약간 놀랄 정도였습니다) – Bahbar

+0

@BDL 그 요점은 배열 텍스처를 사용하는 방법을 설명하기가 부족하다는 것입니다. –