2012-12-10 6 views
0

매개 변수 수준이 0 인 glTexImage2D를 호출합니다. 그런 다음 glGenerateMipmap (GL_TEXTURE_2D)을 호출합니다. GL_TEXTURE_BASE_LEVEL 및 GL_TEXTURE_MAX_LEVEL은 어떻게됩니까? 나는 그들이 자동적으로 이런 식으로 설정된다고 가정한다 :glGenerateMipmap은 어떻게 작동합니까?

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, mipmapsCount - 1); 

나중에 수동으로 위의 매개 변수를 설정할 수 있으며, 예를 들어 최대 레벨을 줄일 수있다. 그게 맞습니까?

답변

1

밉맵 스택의 GL_TEXTURE_BASE_LEVEL 및 GL_TEXTURE_MAX_LEVEL 값은 언급 한대로 파생됩니다. 이러한 값은 텍스처 완성도 인 에 필요한 밉맵 레벨 범위를 정의합니다. glGenerateMipmap을 사용하여 자동으로 밉맵을 생성하도록 OpenGL에 요청하면 전체 스택이 채워집니다. glTextureStorage을 사용하여 레벨 수를 지정하면 GL_TEXTURE_MAX_LEVEL이 호출에 제공된 최대 레벨보다 1 작은 값으로 설정됩니다.

밉맵 스택을 빌드 한 후에 기본 및 최대 레벨을 수정할 수도 있지만 OpenGL을 사용하여 밉맵 스택을 작성하는 경우, 그다지 많은 이득을 얻지 못할 것이라고 생각합니다. 정확하게 기억한다면, 전체 밉맵 스택을로드 할 필요가 없도록 (반복적으로 glTexImage*을 호출하고 레벨을 매개 변수로 증가시킴으로써) 밉맵을로드 할 때 기본 및 최대 레벨을 수정할 수 있습니다. 텍스처 메모리를 절약하거나 더 높은 [즉, 스택의 작은 밉맵] 레벨에 대한 샘플링을보다 잘 제어 할 수 있습니다. GL_TEXTURE_MIN_LOD 및 GL_TEXTURE_MAX_LOD를 사용하여 텍스처링에 사용 된 밉맵 스택의 밉맵을 제어 할 수도 있습니다. 이러한 이유로 텍스처링하는 동안 밉맵 레벨을 비동기 적으로로드 할 수있었습니다.