OpenGL 텍스처 좌표는 어떻게 작동합니까?
glVertex를 호출하기 전에 다음 중 하나를 호출해야한다는 것을 알고 있습니다.
glTexCoord(0,0);
glTexCoord(0,1);
glTexCoord(1,1);
glTexCoord(1,0);
그러나 나는 그것이 무엇을 의미하는지 전혀 모른다. 그러나 오른쪽에 2를 곱하면 (또는 모두 분할합니까?) 텍스처가 확장되고 반대로하면 텍스처가 두 번 반복된다는 것을 알고 있습니다. 작동 할 때까지 작업을 적용하여 텍스처 아틀라스를 코딩했습니다. 그러나 나는 무슨 일이 일어나고 있는지에 대한 적절한 아이디어를 가지고 있습니다. 이러한 분할이 이미지에 영향을 미치는 이유는 무엇이며 반전이 이미지를 반영하는 이유는 무엇입니까? 텍스처 좌표는 어떻게 작동합니까?
텍스처 좌표는 지정하려는 정점에 해당하는 텍스처 이미지의 점을 지정합니다. 텍스처 이미지가 인쇄 된 직사각형 고무 시트를 생각해보십시오. 여기서 각면의 길이는 0-1 범위로 정규화됩니다. 이제 해당 텍스처를 사용하여 삼각형을 그리고 싶다고 가정 해 보겠습니다. 3 개의 핀을 가져 와서 원하는 각 텍스처 좌표의 위치에있는 고무 시트에 배치합니다. ([0, 0], [1, 0] 및 [1, 1]이라고 말하십시오) 그런 다음 핀을 빼지 않고 원하는 정점 좌표 ([0, 0], [0.5, 0] 및 [ 1, 1]), 고무 시트가 늘어나고 이미지가 왜곡됩니다. 이것이 기본적으로 텍스처 좌표가 작동하는 방식입니다.
1보다 큰 텍스처 좌표를 사용하고 텍스처가 반복되도록 설정되어 있으면 마치 고무 시트의 크기가 무한하고 텍스처가 그 위에 타일링 된 것과 같습니다. 따라서 두 정점에 대한 텍스처 좌표가 0, 0 및 4, 0이면 해당 정점간에 이미지를 4 번 반복해야합니다.
@ b1nary.atr0phy 모든 시각적 사상가를위한 이미지!
OpenGL은 역 텍스처링을 사용합니다. 월드 공간 (X, Y, Z)에서 텍스처 공간 (X, Y), 이산 공간 (U, V), 이산 공간이 [0,1] 도메인에있는 좌표를받습니다.
다각형을 종이 한 장으로 생각하십시오. 이것으로 :
glTexCoord(0,0);
glTexCoord(0,1);
glTexCoord(1,1);
glTexCoord(1,0);
OpenGL에게 종이 전체에 그리도록 지시합니다. 수정 사항을 적용하면 주어진 좌표에 따라 텍스처링 공간이 수정됩니다. 예를 들어 분할 할 때 동일한 텍스처를 두 번 얻을 때 OpenGL에 전체 용지 대신 시트의 절반을 매핑하도록 지시합니다.
Red Book의 9 장에서는 이에 대해 자세히 설명하고 온라인에서 무료로 사용할 수 있습니다.
http://www.glprogramming.com/red/chapter09.html
텍스처 좌표는 x, y를 너비 및 높이 텍스처 공간의 0-1 공간에 매핑합니다. 그런 다음 삼각형 위에 고무 시트처럼 늘어납니다. 사진으로 가장 잘 설명되며 레드 북이이를 수행합니다.
2D 이미지 텍스처의 경우 텍스처 좌표의 0,0은 이미지의 왼쪽 하단 모서리에 해당하고 텍스처 좌표의 1,1은 이미지의 오른쪽 상단 모서리에 해당합니다. "이미지의 왼쪽 하단 모서리"는 왼쪽 하단 픽셀의 중앙이 아니라 픽셀의 가장자리에 있습니다.
이미지를 업로드 할 때도 흥미 롭습니다.
8.5.3 텍스처 이미지 구조
텍스처 이미지 자체 (데이터로 참조)는 일련의 값 그룹입니다. 첫 번째 그룹은 텍스처 이미지의 왼쪽 하단 모서리입니다. 후속 그룹은 너비 너비 행을 왼쪽에서 오른쪽으로 채 웁니다. 높이 행은 아래에서 위로 쌓여 단일 2 차원 이미지 슬라이스를 형성합니다. 깊이 슬라이스는 뒤에서 앞으로 쌓입니다.
대부분의 이미지 형식은 데이터가 맨 아래 행이 아니라 맨 위에서 시작합니다.
참조 URL : https://stackoverflow.com/questions/5532595/how-do-opengl-texture-coordinates-work
'development' 카테고리의 다른 글
현재 수업과 방법을 얻으시겠습니까? (0) | 2020.12.28 |
---|---|
Android 활동 레이블 및 레이블 표시 줄을 비활성화 / 제거하는 방법은 무엇입니까? (0) | 2020.12.28 |
Crashlytics 파일을 찾을 수 없습니다. (0) | 2020.12.28 |
Facebook 공유를위한 새로운 og : image 크기? (0) | 2020.12.28 |
simple_form을 사용한 입력 기본값 (0) | 2020.12.28 |