GL_TEXTURE_WRAP) _ (S / T) 변경은 무엇을합니까?


12

초보자 OpenGL 튜토리얼을 진행 중이며 현재 튜토리얼에서는 간단한 사각형에 텍스처를 적용하는 방법을 알려줍니다. 튜토리얼 상태는 텍스처 매개 변수 GL_TEXTURE_WRAP_S 및 GL_TEXTURE_WRAP_T를 GL_CLAMP_TO_EDGE로 설정하라는 메시지를 표시하지만 이것이 실제로 무엇을하는지 확실하지 않습니다. 텍스처가 매핑되는 공간보다 크거나 작은 텍스처가 처리되는 방식과 관련이 있다는 것을 알고 있지만 실제로 어떤 동작이 발생하는지 잘 모르겠습니다. GL_CLAMP_TO_EDGE의 기능은 무엇이며 GL_CLAMP, GL_CLAMP_TO_BORDER, GL_REPEAT와 어떻게 다릅니 까? 미리 감사드립니다. 나와 같은 바보에게 이미지를 제공 할 수 있다면 보너스 도움이됩니다.

답변:


29

S와 T는 U와 V (또는 원하는 경우 X와 Y) 또는 GLSL을 의미합니다.

vec4.xyzw == vec4.rgba == vec4.strq

GL_REPEAT 모드는 (0,0)에서 (1,1) 범위를 지나갈 때 텍스처가 반복됩니다.

GL_CLAMP_TO_EDGE 모드는 가장자리에서 떨어지면 마지막 픽셀에서 텍스처가 중지됩니다.

GL_CLAMP 및 GL_CLAMP_TO_BORDER는 모든 텍스처 경계가 0 픽셀이어야하므로 더 이상 의미가 없으므로 더 이상 사용되지 않습니다. (GL3 주위 어딘가에 믿는다)

더 많은 모드가 있으므로 문서를 읽으십시오. (예 : GL_MIRRORED_REPEAT, GL_MIRROR_CLAMP_TO_EDGE)


http://www.flipcode.com/archives/Advanced_OpenGL_Texture_Mapping.shtml에 좋은 예가 있습니다 . 여기 미리보기가 있습니다.

랩 S : GL_CLAMP / 랩 T : GL_CLAMP

클램프 클램프

랩 S : GL_CLAMP / 랩 T : GL_REPEAT

클램프 반복

랩 S : GL_REPEAT / 랩 T : GL_CLAMP

반복 클램프

랩 S : GL_REPEAT / 랩 T : GL_REPEAT

반복 반복


감사. 좋은 대답입니다. GL_CLAMP_TO_EDGE와 GL_CLAMP 사이에 차이가 있는지, 그리고 사용 가능한 공간을 채우기 위해 텍스처를 확장시키는 방법이 있는지 아십니까?
— w4etwetewtwet

CLAMP라고 말한 곳에서 GL_CLAMP_TO_EDGE를 말하면 GL_CLAMP는 현대 OpenGL에서 사라졌습니다. 강조하기 위해 답을 편집하겠습니다.
— MickLH

단순히 텍스처를 다른 범위로 늘리는 것을 의미한다면 "확장"에 대해서는 메쉬 매개 변수화 중에 처리해야합니다. (UV 매핑, 아티스트 작업). 실제로 실제적으로해야하는 경우 셰이더에 사용할 고유 한 수식을 작성해야합니다. (P 앱이 심각 이미 오래된 경우 아니면 내가 GL_TEXTURE 매트릭스를 추측)
— MickLH

4

다음은 2014/02/07 현재 glTexParameter 의 OpenGL Reference 페이지에서 발췌 한 내용입니다 .

GL_TEXTURE_WRAP_S

텍스처 좌표 s 의 랩 매개 변수를 GL_CLAMP_TO_EDGE, GL_CLAMP_TO_BORDER, GL_MIRRORED_REPEAT, GL_REPEAT 또는 GL_MIRROR_CLAMP_TO_EDGE로 설정합니다.

  • GL_CLAMP_TO_EDGE 는 s 좌표가 범위로 ​​고정되도록합니다 범위. 여기서 N 은 클램핑 방향의 텍스처 크기입니다.

  • GL_CLAMP_TO_BORDER를 평가하여 S GL_CLAMP_TO_EDGE 유사한 방식으로 조정한다.
    그러나 GL_CLAMP_TO_EDGE 모드에서 클램핑이 발생한 경우 가져온 텍셀 데이터는 GL_TEXTURE_BORDER_COLOR에 지정된 값으로 대체됩니다.

  • GL_REPEAT 는 s 좌표 의 정수 부분 이 무시되도록합니다.
    GL은 소수 부분 만 사용하므로 반복 패턴이 생성됩니다.

  • GL_MIRRORED_REPEAT 는 s 의 정수 부분 이 짝수이면 s 좌표가 텍스처 좌표의 소수 부분으로 설정되도록합니다 . s의 정수 부분이 홀수이면 s 텍스처 좌표가로 설정됩니다 1 구. 여기서 sfrac 의 소수 부분을 나타냅니다 .

  • GL_MIRROR_CLAMP_TO_EDGE 는 텍스처의 하나의 표현에 대해 GL_MIRRORED_REPEAT와 같이 s 좌표가 반복되도록하며, 이때 GL_CLAMP_TO_EDGE에서와 같이 좌표가 클램핑됩니다.

처음에 GL_TEXTURE_WRAP_S 는 GL_REPEAT 로 설정됩니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.