삼각형 인덱스 목록이 주어 졌을 때, 지오메트리 쉐이더와 인접하여 인덱스 목록으로 변환하는 방법은 무엇입니까?
우리는 여기서 인덱스 에 대해 엄격하게 이야기하고 있습니다-정점이 존재하지만 부동 소수점 비교 및 엡실론에 빠지지 않고 중복 정점을 일치시키는 데 사용할 수 있기 때문에 인덱스에만 초점을 맞출 것입니다. 이미 완료되었습니다.
목록의 주어진 삼각형에 대해 인덱스 {0, 1}, {1, 2} 및 {2, 0} (또는 {n, n + 1}, {n + 1, n + 2}, { n + 2, n} 원하는 경우) 가장자리를 형성합니다. 인덱스리스트는 올바른 형식이며 와인딩 순서를 올바르게 준수합니다.
주어진 가장자리에 대해 두 인덱스를 사용하는 다른 삼각형을 전체 목록에서 검색 할 수 있으며 해당 삼각형의 세 번째 인덱스는 해당 가장자리에 인접한 삼각형을 완성하는 데 사용되는 인덱스입니다.
인접 목록에서 각 원래 삼각형은 6 개의 인덱스로 표시되고 원래 인덱스는 슬롯 0, 2, 4로 이동합니다. 인접성을 완료하기위한 새 인덱스는 슬롯 1, 3, 5로 이동합니다. 에지 {0, 1}에 대해 완료 할 인덱스는 슬롯 1에, 에지 {1, 2}에 대해 완료 할 인덱스는 슬롯 3에, 인덱스 가장자리 {2, 1}에 대해 완료하려면 슬롯 5에 들어갑니다.
내가 무엇을 시도 했습니까?
나는 그것을 무차별 강제로 시도했지만 그래도 효과가 있지만 더 우아한 접근 방식을 따르고 있습니다.
Eric Lengyel의 Edge List Builder를 사용해 보았지만 (1) 원래 삼각형 순서를 존중하지 않는 것, (2) 감기 순서를 존중하지 않는 것, (3) 어디로 가야할지 진흙처럼 분명합니다. 다음으로 엣지 목록을 작성한 후 (4) "triangleIndex"와 "faceIndex"와 같이 눈부신 오류가있는 샘플 코드가 의심됩니다. 작성자가 코드를 컴파일해도 상관 없습니다. 그것을 확인?
여기에서 제안이나 조언이 있습니까?