복셀에 의해 실제로 다각형을 사용하여 렌더링되는 블록의 세계를 의미하는 마인 크래프트 유형 장면을 생각하고 있습니다.
지오메트리 쉐이더를 사용하는 경우 복셀 당 정확히 세 개의면 (또는 무엇이든)을 피하는 것이 어렵습니다.
텍스처가 동일한 인접한 블록이 많이있는 경우 텍스처 타일링을 사용하여 VBO 방식에서 (축소 된) 스트립에 삼각형이 훨씬 적습니다. 내 말은, 잔디 복셀의 멋진 6x6 면적의 커다란 평면이 있다면, 전체 상단을 64 개가 아닌 2 개의 삼각형으로 그릴 수 있습니다.
GS 접근 방식을 사용하면 VBO 접근 방식을 사용하여 매우 간단한 인접 복셀로 막힌 사소한 얼굴 컬링을 수행 할 수 없습니다.
GS 접근법을 시도하지는 않았지만 반복되는 인접한 타일을 결합한 VBO 접근법은 매우 효과적이라고 말할 수 있습니다. 정점을 반복하는 것보다 요소 인덱스를 엉망으로 만드는 것이 훨씬 느리다는 것을 알았습니다. 월드를 멋진 작은 큐브로 분할하면 일반적으로 버텍스 당 구성 요소 당 하나의 바이트 만 사용하고 텍스처 정보와 법선 (축 정렬 큐브의 얼굴에는 가능한 법선이 3 개만 있음) 등을 4 바이트로 묶을 수 있습니다. 정점 당 4 바이트로 멋지고 빠릅니다.
나는 6 개의 얼굴 각각에 대해 별도의 VBO를 사용했습니다. 최대 3 개의 얼굴 만 분명히 그려야합니다. 이것은 마인 크래프트 스타일 복셀의 상단 부분에 일반적으로 사용되는 다양한 텍스처링에 잘 맞습니다. 각각의 세트에 대해 정상 및 그 때문에 균일하기 때문입니다.
GL_REPEAT
수평 축이 있는 아틀라스에서 수직 타일 픽스 맵을 사용하고 동일한 아틀라스에 픽스 맵의 90도 회전 버전을 사용하면 동일한 호출에서 동일한 VBO를 사용하여 분명히 다른 블록을 대량으로 그릴 수 있습니다. 6x6 잔디 영역 예에서는 아틀라스의 한 차원에서만 반복하므로 12 개의 삼각형으로 나눕니다.
나는 주로 통합 그래픽 칩과 모바일의 매우 낮은 엔드에서이 작업을 수행 해왔다. GS는 언젠가는 꿈을 꿀 수있는 것이다.