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 현재 glTexParameterOpenGL 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_EDGEs 좌표가 범위로 ​​고정되도록합니다 범위. 여기서 N 은 클램핑 방향의 텍스처 크기입니다.

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

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

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

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

처음에 GL_TEXTURE_WRAP_SGL_REPEAT 로 설정됩니다 .

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