2012-06-13 4 views
2

게임을 만드는 기본 사항을 학습 한 Android에서 OpenGL을 배웠습니다.OpenGl ES - 다른 텍스처를 타일 그리드에 매핑하는 방법

내가 겪고있는 문제는 "타일 당"서로 다른 질감을 그리드에 매핑하는 것과 관련이 있습니다. 예를 들어

: - 8 * 8 -

나는 타일의 그리드가 내 버텍스 배열에서 나는 열/행을 구성하기 위해 9 × 9의 정점을 정의하여 그리드를 정의합니다. 그리드의 각 사각형을 구성하는 2 개의 삼각형을 그리는 방법을 알려주는 인덱스 버퍼를 만듭니다.

내 좌절감은 그리드의 다른 타일에 텍스처를 매핑하는 데 있습니다. 각 사각형은 그리드에서 다른 사각형과 정점을 공유하며 OpenGL에서 정점 당 하나의 텍스처 좌표 만 적용 할 수 있습니다.

제가 생각할 수있는 유일한 해결책은 정점 버퍼에 중복 정점을 생성하여 정점 당 개별 텍스처 좌표를 지정할 수있게하는 것입니다 (정점이 이전 타일 생성에서 버퍼에 이미 있음에도 불구하고) . 이 방법은 내 머리 속에 나던 옳은 것처럼 보이는 정점의 전체 힙으로 나를 끝장 낼 것입니다. 또한 동적으로 큰 비트 맵을 만든 다음 분수 텍스처 좌표로 그리드에 매핑하지 않아도됩니다.

그리드에서 타일마다 다른 텍스처를 얻는 방법에 대한 초심자의 마음을 누군가 가르쳐 주실 수 있습니까?

감사합니다. 내가 생각할 수있는

답변

0

유일한 해결책은 나 개인의 질감이 당신이 무엇을해야하는지 정확히 정점

당 좌표를 할당 할 수 것 정점 버퍼에 중복 정점을 생성하는 것입니다. 낭비되는 것처럼 보일지 모르지만, OpenGL의 "정점"은 정점 (texcoords, normals 등)을 정의하는 모든 속성의 모음입니다. 하나의 물리적 정점 위치가 4 개의 쿼드에 의해 공유되지만 해당 쿼트에 해당하는 점의 텍스쳐가 다른 경우 4 개의 고유 정점 및 인덱스를 만들어서 해당 점을 참조해야합니다.

+0

설명해 주셔서 감사합니다. 큰 지형 메쉬를 텍스처링하면 어떻게됩니까? – user1411499

+0

글쎄, 그 질문에 대한 완전한 대답은 전체 교과서를 채울 수 있지만, 중복은 텍스쳐 경계에있는 버텍스의 문제 일뿐입니다. 미세한 테셀레이션 된 메쉬를 많이 가지고 있다면 텍스처 사이에 실제로 공유되는 정점의 수는 전체 정점 수에 비해 상당히 적습니다. 그리면 복사 할 때 그리는 것만 큼 크지는 않습니다. 쿼드 (각 꼭지점은 4x 중복되어야 함). @ user1411499 – Tim

+0

대단히 고마워요 .- 제게 많은 도움을 주셨습니다. – user1411499

관련 문제